2021. 4. 15. 15:32ใ๐ Algorithm/๐ช๐ป Python ๋ฌธ์ ํ์ด
๋ฌธ์ ์ค๋ช
์๋น์ด๋ ๋์๊ณผ ์จ๋ฐ๊ผญ์ง์ ํ๊ณ ์๋ค. ์๋น์ด๋ ํ์ฌ ์ N(0 ≤ N ≤ 100,000)์ ์๊ณ , ๋์์ ์ K(0 ≤ K ≤ 100,000)์ ์๋ค. ์๋น์ด๋ ๊ฑท๊ฑฐ๋ ์๊ฐ์ด๋์ ํ ์ ์๋ค. ๋ง์ฝ, ์๋น์ด์ ์์น๊ฐ X์ผ ๋ ๊ฑท๋๋ค๋ฉด 1์ด ํ์ X-1 ๋๋ X+1๋ก ์ด๋ํ๊ฒ ๋๋ค. ์๊ฐ์ด๋์ ํ๋ ๊ฒฝ์ฐ์๋ 1์ด ํ์ 2*X์ ์์น๋ก ์ด๋ํ๊ฒ ๋๋ค.
์๋น์ด์ ๋์์ ์์น๊ฐ ์ฃผ์ด์ก์ ๋, ์๋น์ด๊ฐ ๋์์ ์ฐพ์ ์ ์๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ด ๋ช ์ด ํ์ธ์ง ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅํ์
์ฒซ ๋ฒ์งธ ์ค์ ์๋น์ด๊ฐ ์๋ ์์น N๊ณผ ๋์์ด ์๋ ์์น K๊ฐ ์ฃผ์ด์ง๋ค. N๊ณผ K๋ ์ ์์ด๋ค.
์ถ๋ ฅํ์
์๋น์ด๊ฐ ๋์์ ์ฐพ๋ ๊ฐ์ฅ ๋น ๋ฅธ ์๊ฐ์ ์ถ๋ ฅํ๋ค.
์ ์ถ๋ ฅ ์์
ํ์ด ๊ณผ์
๊ฐ๋จํ BFS์๋ค ์๊ฐ์ dist์ ์ ์ฅํด์ฃผ๋ฉด ๋๋ ๊ฐ๋จํ ๋ฌธ์ ์๋ค. BFS ๋ฌธ์ ๋ฐฉ์์ ๋ํด ์๋ฉด ์ฝ๊ฒ ํ ์ ์์๋ค.
1์ด ํ ๋ง๋ค ์ด๋ํ ์์๋ ๊ฑฐ๋ฆฌ์ธ ํ์ฌ +1, ํ์ฌ -1, ํ์ฌ *2 ์ for๋ฌธ์ ๋ฃ์ด ์กฐ๊ฑด๋ฌธ์ ๊ฒ์ฌํ๋๋ก ํ์๊ณ ์ต๋ ๊ฐ์ด 100,000์ด๋ฏ๋ก 100,000*2๋ฐฐ์ธ 200,000์ MAX ๊ฐ์ผ๋ก ์ค์ ํ๋ค.
from collections import deque
def bfs(n, k):
queue = deque([n])
visited[n] = True
while queue:
now = queue.popleft()
for move in [now+1, now-1, now*2]:
if 0<= move <= MAX and not visited[move]:
visited[move] = True
queue.append(move)
dist[move] = dist[now]+1
return dist[k]
if __name__ == '__main__':
n, k = map(int,input().split())
MAX = 200000
visited = [False]* (MAX+1)
dist = [0]* (MAX+1)
print(bfs(n,k))
'๐ Algorithm > ๐ช๐ป Python ๋ฌธ์ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python - ๋ฐฑ์ค 13913] ์จ๋ฐ๊ผญ์ง4 (0) | 2021.04.15 |
---|---|
[Python - ๋ฐฑ์ค 14888] ์ฐ์ฐ์ ๋ผ์๋ฃ๊ธฐ (0) | 2021.04.14 |
[Python - ๋ฐฑ์ค 2529] ๋ถ๋ฑํธ (0) | 2021.04.14 |