๐Ÿ—๏ธ Algorithm/๐ŸŸฉ ๋ฐฑ์ค€

๐ŸŸฉ [๋ฐฑ์ค€] [Python] [Class3] 1697๋ฒˆ_์ˆจ๋ฐ”๊ผญ์งˆ

Dbswnstjd 2022. 11. 10. 01:17

๋ฌธ์ œ

https://www.acmicpc.net/problem/1697

 

1697๋ฒˆ: ์ˆจ๋ฐ”๊ผญ์งˆ

์ˆ˜๋นˆ์ด๋Š” ๋™์ƒ๊ณผ ์ˆจ๋ฐ”๊ผญ์งˆ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ํ˜„์žฌ ์  N(0 ≤ N ≤ 100,000)์— ์žˆ๊ณ , ๋™์ƒ์€ ์  K(0 ≤ K ≤ 100,000)์— ์žˆ๋‹ค. ์ˆ˜๋นˆ์ด๋Š” ๊ฑท๊ฑฐ๋‚˜ ์ˆœ๊ฐ„์ด๋™์„ ํ•  ์ˆ˜ ์žˆ๋‹ค. ๋งŒ์•ฝ, ์ˆ˜๋นˆ์ด์˜ ์œ„์น˜๊ฐ€ X์ผ

www.acmicpc.net

ํ’€์ด

# ๋ฐฑ์ค€ 1697๋ฒˆ ๋ฌธ์ œ - ์ˆจ๋ฐ”๊ผญ์งˆ
from collections import deque
n, k = map(int, input().split())

def bfs(v):
    queue = deque([v])
    while queue:
        v = queue.popleft()
        if v == k:
            return visited[v]
        for i in (v-1, v+1, 2*v):
            if 0 <= i <= 100000 and not visited[i]:
                visited[i] = visited[v] + 1
                queue.append(i)

visited = [0 for _ in range(100001)]
print(bfs(n))

์ฒ˜์Œ์— BFS๋ฅผ ์ƒ๊ฐํ•˜์ง€ ๋ชปํ•˜๊ณ  ํ—ค๋ฉ”์—ˆ๋‹ค.

๊ทธ๋ฆฌ๊ณ  for(a,b,c) ๋ฌธ์„ ์ฒ˜์Œ์•Œ๊ฒŒ๋˜์—ˆ๋‹ค.

์ด๋Š” a,b,c๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ์ ‘๊ทผํ•œ๋‹ค.