-
[백준] 13549번_숨바꼭질3Study/알고리즘 2020. 2. 27. 23:58
문제 링크 : https://www.acmicpc.net/problem/13549
13549번: 숨바꼭질 3
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일 때 걷는다면 1초 후에 X-1 또는 X+1로 이동하게 된다. 순간이동을 하는 경우에는 0초 후에 2*X의 위치로 이동하게 된다. 수빈이와 동생의 위치가 주어졌을 때, 수빈이가 동생을 찾을 수 있는 가장 빠른 시간이 몇 초 후인지 구하는
www.acmicpc.net
from collections import deque s, sis = map(int,input().split()) check = [-1 for _ in range(100001)] def bfs(s,sis): q = deque() q.append(s) check[s] = 0 while q: x = q.popleft() if 0<=2*x<100001: if check[2*x] == -1: check[2*x] = check[x] q.appendleft(2*x) for i in (x+1,x-1): if 0<=i<100001: if check[i] == -1: q.append(i) check[i] = check[x]+1 bfs(s,sis) print(check[sis])
순간 이동이 우선순위가 높으므로 먼저 처리해주기 위해 deque에서 앞에 붙이고, 앞에서부터 꺼내며 처리했다.
'Study > 알고리즘' 카테고리의 다른 글
[백준] 3055번_탈출 (0) 2020.03.02 [백준] 1261번_알고스팟 (0) 2020.02.28 [백준] 14226번_이모티콘 (0) 2020.02.26 [백준] 1043번_거짓말 (0) 2020.02.26 [백준] 1697번_숨바꼭질 (0) 2020.02.26