1697: 숨바꼭질

ewillwin·2023년 5월 17일
0

Problem Solving (BOJ)

목록 보기
55/230

  • bfs를 통해 모든 경우를 순회하면서 curr == K인 경우에 bfs의 depth 출력
  • 걸린 시간은 bfs의 depth임
    -> bfs의 depth는 visit list를 이용하여 구할 수 있음
    -> visit[next_position] = visit[current_position] + 1 이런식으로
import sys
from collections import deque

def bfs(N, K):
    queue = deque([]); queue.append(N)

    while queue:
        curr = queue.popleft()

        if curr == K:
            print(visit[curr])
            return

        if 0 <= curr-1 <= 100000 and visit[curr - 1] == 0:
            queue.append(curr - 1); visit[curr-1] = visit[curr] + 1
        if 0 <= curr+1 <= 100000 and visit[curr + 1] == 0:
            queue.append(curr + 1); visit[curr+1] = visit[curr] + 1
        if 0 <= curr*2 <= 100000 and visit[curr * 2] == 0:
            queue.append(curr * 2); visit[curr*2] = visit[curr] + 1
        

         
N, K = map(int, input().split(' '))

visit = [0] * (100000+1)
bfs(N, K)
  • indexError만 조심하면 됨
profile
💼 Software Engineer @ LG Electronics | 🎓 SungKyunKwan Univ. CSE

0개의 댓글