[BOJ] 1697 | 숨바꼭질

Gaanii·2024년 10월 29일

Problem Solving

목록 보기
84/210
post-thumbnail

아래 백준 로고를 클릭하면 해당 문제로 이동합니다 😀

BOJ 로고



풀이과정


BFS를 이용하면 금방 풀 수 있..나..? (사실 금방 푼거 아님)

수빈이와 동생이 이동할 수 있는 곳은 0 ~ 100000이므로 그 길이의 리스트를 모두 0으로 셋팅해줬다.

그리고 현재 수빈이의 위치에서 이동 가능한 -1, +1, *2를 이동했을 때 이동 횟수를 저장했다.

동생의 위치와 겹칠 때 까지 무한반복을 하면 된다 ..



코드


from collections import deque
N, K = map(int, input().split())
dis = [0] * 100001

q = deque()
q.append(N)

while q:
    c_pos = q.popleft()
    if c_pos == K:
        print(dis[c_pos])
        break
    for move_pos in (c_pos-1, c_pos+1, 2 * c_pos):
        if 0 <= move_pos < 100001 and not dis[move_pos]:
            dis[move_pos] = dis[c_pos] + 1
            q.append(move_pos)


결과


정답

0개의 댓글