앎을 경계하기

Programming/Algorithm

백준 #1697 - 숨바꼭질

양갱맨 2019. 11. 9. 00:40

 

BFS로 풀면 되는 문제

출처 - http://mishadoff.com/blog/dfs-on-binary-tree-array/

import sys
from collections import deque
N, K =  map(int,sys.stdin.readline().split(' '))

sis = K
pos_s = N
q = deque()
q.append(N)
time = [0 for i in range(100001)]

while q:
    v = q.popleft()
    if v == sis:
        print(time[v])
        break
    for next_step in (v-1, v+1, v*2): # bfs
        if 0<=next_step < 100001 and not time[next_step]:
            time[next_step] = time[v]+1
            q.append(next_step)

이동할 수 있는 대로 해보고 했을 때 수빈이가 동생의 위치와 같은지 판단하고 time 배열에 step을 누적해서 넣어주면 된다.

'Programming > Algorithm' 카테고리의 다른 글

백준 #10819 - 차이를 최대로  (0) 2019.11.09
백준 #13913 - 숨바꼭질4  (0) 2019.11.09
백준 #1874 - 스택 수열 python  (0) 2019.10.20
백준 #1021 - 회전하는 큐 python  (0) 2019.10.19
백준 #10828 - 덱 python  (0) 2019.10.19