■ 문제풀이
1) bfs 알고리즘 사용
2) 이동 가능 범위 => n - 1, n + 1, n * 2
■ 해답
from collections import deque
n, k = map(int, input().split())
MAX = 100001
time = [0] * MAX
def bfs():
queue = deque()
queue.append(n)
while queue:
v = queue.popleft()
if v == k:
print(time[v])
return
for i in (v - 1, v + 1, v * 2):
if 0 <= i < MAX and not time[i]:
time[i] = time[v] + 1
queue.append(i)
bfs()
출처 : https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
'Algoritm > BOJ' 카테고리의 다른 글
[BOJ] 10773번:제로 (0) | 2021.08.25 |
---|---|
[BOJ] 7562번:나이트의 이동 (0) | 2021.08.16 |
[BOJ] 2178번:미로 탐색 (0) | 2021.08.13 |
[BOJ] 1012:유기농 배추 (0) | 2021.08.09 |
[BOJ] 2667번:단지번호 붙이기 (0) | 2021.08.05 |