티스토리 뷰

728x90

문제

www.acmicpc.net/problem/1697

 

1697번: 숨바꼭질

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일

www.acmicpc.net

풀이

계속 indexerror 가 뜨길래 한참을 고민했는데

두번 째 if문에서 i의 범위를 i<=100000 로 해줬더니 발생한 문제 !!

-1, -2, -3.. 일때도 배열 인덱스 값으로 넣어줬으니 당연히 indexerror가 뜨는 것이었다 ㅠㅠ

 

num배열에 방문표시를 하며 단계적으로(bfs) 방문해서 결과값을 출력하게 했다 !

 

소스코드

from collections import deque

def bfs():
    ans = -1
    que = deque()
    que.append(n)
    while que:
        ans+=1
        for _ in range(len(que)):
            x = que.popleft()
            if x == k:
                return ans
            for i in (x-1, x+1, x*2):
                if 0<=i<=100000 and num[i]==0:
                    num[i]=1
                    que.append(i)

n, k = map(int, input().split())
num = [0]*100001
num[n]=1
print(bfs())
반응형