본문 바로가기
코딩/백준-파이썬

백준 13549번: 숨바꼭질 3

by 철없는민물장어 2022. 7. 27.
728x90
반응형

https://www.acmicpc.net/problem/13549

 

13549번: 숨바꼭질 3

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

www.acmicpc.net


from collections import deque
n,k=map(int,input().split())

INF=int(1e9)
dist=[INF]*100001

def bfs():
    queue=deque()
    queue.append(n)
    dist[n]=0
    while queue:
        x=queue.popleft()
        if x==k:
            return dist[x]
        for nx in (x*2,x+1,x-1):
            if nx>=0 and nx<100001 and dist[nx]==INF:
                if nx==(x*2):
                    dist[nx]=dist[x]
                    queue.appendleft(nx)
                else:
                    dist[nx]=dist[x]+1
                    queue.append(nx)

print(bfs())

bfs를 이용해서..

방문하지 않은 x*2의 위치, x-1의 위치, x+1의 위치를 탐색하는데,

x*2로 순간이동할 때 0초가 들기 때문에 x*2를 우선적으로 하도록해서.. appendleft를 사용함

 

728x90
반응형

'코딩 > 백준-파이썬' 카테고리의 다른 글

백준 5972번: 택배 배송  (0) 2022.07.27
백준 1916번: 최소비용 구하기  (0) 2022.07.27
백준 2589번: 보물섬  (0) 2022.07.26
백준 1149번: RGB 거리  (0) 2022.07.26
백준 16234번: 인구 이동  (0) 2022.07.26

댓글