본문 바로가기
Algorithm_PYTHON

[백준_파이썬]1697번_숨바꼭질

by 코리니덕 2021. 8. 24.
# 빠른 시간 안에 움직여야 하니까 bfs사용
from collections import deque

MAX = 100001
n, k = map(int, input().split())
# 위치 입력표시할 배열(최대가 100000니까 +1로 잡아주기)
maps = [0] * MAX

q = deque()
# 수빈이의 시작점을 큐에 넣기
q.append(n)

while q:
    x = q.popleft()
    # 수빈이의 위치와 동생의 위치가 같으면 그때의 원소값 출력
    if x == k:
        print(maps[x])
        break

    # 이동할 위치 따져보기
    for nx in (x-1, x+1, x*2): # 4, 6, 10 => nx
        # 만약 ,nx가 수직선 상에 있는 좌표안에 있고,
        # 그곳에 아무 표시가 없다면
        if 0 <= nx < MAX and maps[nx] == 0:
        # if 0 <= nx < MAX and not maps[nx] :
            maps[nx] = maps[x] +1 # 전 좌표에서 1초 더하기
            # 즉, maps[4, 6, 10] = 0 + 1
            q.append(nx)
print(maps)