[๋ฐฑ์ค/python] 12851๋ฒ : ์จ๋ฐ๊ผญ์ง 2
๋ฌธ์
์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 โค N โค 100,000)์ ์๊ณ , ๋์์ ์ K(0 โค K โค 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ ๋ ๊ฑท๋๋ค๋ฉด 1์ด ํ์ X-1 ๋๋ X+1๋ก ์ด๋ํ๊ฒ ๋๋ค. ์๊ฐ์ด๋์ ํ๋ ๊ฒฝ์ฐ์๋ 1์ด ํ์ 2*X์ ์์น๋ก ์ด๋ํ๊ฒ ๋๋ค.
์๋น์ด์ ๋์์ ์์น๊ฐ ์ฃผ์ด์ก์ ๋, ์๋น์ด๊ฐ ๋์์ ์ฐพ์ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ด ๋ช ์ด ํ์ธ์ง ๊ทธ๋ฆฌ๊ณ , ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ผ๋ก ์ฐพ๋ ๋ฐฉ๋ฒ์ด ๋ช ๊ฐ์ง ์ธ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ ๋ฒ์งธ ์ค์ ์๋น์ด๊ฐ ์๋ ์์น N๊ณผ ๋์์ด ์๋ ์์น K๊ฐ ์ฃผ์ด์ง๋ค. N๊ณผ K๋ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๋น์ด๊ฐ ๋์์ ์ฐพ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
๋์งธ ์ค์๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ผ๋ก ์๋น์ด๊ฐ ๋์์ ์ฐพ๋ ๋ฐฉ๋ฒ์ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์ ๋ต
import sys
input = sys.stdin.readline
N, K = map(int, input().split())
if K == N: # ๋์ด ๊ฐ์ ์์น์ ์์ ๋
print(0)
print(1)
elif K < N : # ๋์์ด ๋ค์ ์์ ๋
print(N-K)
print(1)
else:
visited = [0 for _ in range(100001)]
queue = [N]
time = 0
while queue:
time += 1
next_queue = []
for n in queue:
if (n >= 0 and n <= 100000) and (visited[n] == 0 or visited[n] == time):
next_queue.extend([n*2, n-1, n+1])
visited[n] = time
if next_queue.count(K) > 0:
print(time)
print(next_queue.count(K))
break
queue = next_queue
- visited : visited์ ๊ฐ๋ฅํ ์์น์ ๋ชจ๋ ์ซ์๋ฅผ 0์ผ๋ก ์ ํ ํ๋ค.
- queue : queue์๋ ๊ฐ์ ๋ ๋ฒจ์ ์๋ ์ซ์๋ค์ด ๋ค์ด๊ฐ ์์ ์ด๊ณ ๋ ๋ฒจ์ด ๋ฐ๋ ๋๋ง๋ค queue์ ๊ฐ๋ ๋ฐ๋๋ค.
- time : bfs ๊ธฐ๋ฐ์ด๊ธฐ ๋๋ฌธ์ time์ ์๊ฐ ์ฆ, ๋ ๋ฒจ์ ์๋ฏธํ๋ค.
- next_queue : next_queue๋ ๋ค์ ๋ ๋ฒจ์ ์ซ์๋ค์ด ์ ์ฅ๋์ด ์๋ค๊ฐ ํ์ฌ ๋ ๋ฒจ์ ์ซ์๋ค์ ๋ค ํ์ํ ํ์ queue์ ์ ์ฅ๋๋ค.
queue์ ์๋ ๋ชจ๋ ์ซ์๋ฅผ ํ๋์ฉ ๋๋ฉด์
์์น์ ๋ฒ์ ์์ ํด๋นํ๋ฉด์, ํ๋ฒ๋ ๋ฐฉ๋ฌธํ ์ ์ด ์๊ฑฐ๋ ํ์ฌ ๋ ๋ฒจ์์ ๋ฐฉ๋ฌธํ๋ค๋ฉด
next_queue์ ํ์ฌ ์์น์์ ๊ฐ ์ ์๋ ์์น์ ์ซ์๋ค์ ์ถ๊ฐํ๊ณ
ํ์ฌ ๋ ๋ฒจ์์ ๋ฐฉ๋ฌธํ์์ ํ์ํ๊ธฐ ์ํด visited[n]์ ํ์ฌ ๋ ๋ฒจ time์ ์ ์ฅํ๋ค.
queue๋ฅผ ๋ค ๋ ํ next_queue์ ๋ด๊ฐ ๊ฐ์ผํ K๊ฐ 1๊ฐ ์ด์ ์๋ค๋ฉด
time๊ณผ next_queue์ ์๋ K์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๊ณ ๋ฉ์ถ๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/python] 3190๋ฒ : ๋ฑ (0) | 2021.08.28 |
---|---|
[๋ฐฑ์ค/python] 9935๋ฒ : ๋ฌธ์์ด ํญ๋ฐ (0) | 2021.08.26 |
[๋ฐฑ์ค/python] 11724๋ฒ : ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2021.08.23 |
[๋ฐฑ์ค/python] 1012๋ฒ : ์ ๊ธฐ๋ ๋ฐฐ์ถ (0) | 2021.08.23 |
[๋ฐฑ์ค/python] 14500๋ฒ : ํ ํธ๋ก๋ฏธ๋ ธ (0) | 2021.08.19 |