백준 문제 링크
숨바꼭질
- BFS를 사용했다.
- bfs 함수 내에서
100001 길이의 0을 가지는 리스트 answer를 만들었다.- 큐가 비어있을 때까지 큐에서 원소(x)를 꺼내준다.
만약 꺼낸 원소(x)가 k와 같다면 answer[x]를 return한다.
x가 갈 수 있는 좌표는 [ x -1, x + 1, x * 2 ] 3 가지가 있다.
이 좌표들이 범위 안에 있고, 아직 방문하지 않았을 때
이 좌표를 큐에 넣고, answer[좌표] = answer[x] + 1 한다.- bfs(n)을 실행시키면 끝!
from collections import deque
n, k = map(int, input().split())
def bfs(x):
queue = deque()
queue.append(x)
answer = [0] * 100001
while queue:
x = queue.popleft()
if x == k:
return answer[x]
for i in [x - 1, x + 1, x * 2]:
if 0 <= i < 100001:
if answer[i] == 0:
queue.append(i)
answer[i] = answer[x] + 1
print(bfs(n))