cs [파이썬] 백준 13913 : 숨바꼭질 4
본문 바로가기
  • 매일 한걸음씩
  • 매일 한걸음씩
개발/PYTHON 알고리즘 연습

[파이썬] 백준 13913 : 숨바꼭질 4

by 시몬쯔 2020. 2. 13.
728x90
반응형

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

 

13913번: 숨바꼭질 4

수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 1초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는

www.acmicpc.net

from collections import deque

 

INF = 100000

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

dist = [0]*(INF+1)

path = [0]*(INF+1)

 

 

def solve_bfs():

    q = deque()

    q.append(N)

    while q:

        x = q.popleft()

        if x == K:

            print(dist[x])

            p = []

            while x != N:

                p.append(x)

                x = path[x]

            p.append(N)

            p.reverse()

            print(' '.join(map(str, p)))

            return

        for nx in (x*2,x-1, x+1):

            if 0 <= nx <= INF and not dist[nx]:

                dist[nx] = dist[x]+1

                path[nx] = x

                q.append(nx)

 

 

solve_bfs()

 

path는 이전 점을 저장해놓는 리스트

dist는 이제껏 몇 번 이동했는지를 저장해놓는 리스트

p는 경로 저장 리스트

 

참고로 for nx in (x*2,x-1,x+1)에서 x*2,x-1,x+1에 따라 들리는 점 순서 바뀔 수도 있다.

 

피드백은 언제나 환영입니다:)

728x90
반응형

댓글