문제 : www.acmicpc.net/problem/13549
목적지까지 최단거리(시간)를 구하는 문제이기 때문에 BFS
from collections import deque
n, k = map(int, input().split()) # n: 수빈이가 있는 위치, k: 동생이 있는 위치
q = deque()
q.append(n)
visited = [-1 for _ in range(100001)]
visited[n] = 0
while q:
s = q.popleft()
if s == k:
print(visited[s])
break
if 0 <= s-1 < 100001 and visited[s-1] == -1:
visited[s-1] = visited[s] + 1
q.append(s-1)
if 0 < s*2 < 100001 and visited[s*2] == -1:
visited[s*2] = visited[s]
q.appendleft(s*2) # 2*s 가 다른 연산보다 더 높은 우선순위를 가지기 위함
if 0 <= s+1 < 100001 and visited[s+1] == -1:
visited[s+1] = visited[s] + 1
q.append(s+1)
github.com/jisun1125/algorithm-problem-solving/blob/main/baekjoon/no_13549.py
'PS > 백준' 카테고리의 다른 글
[백준/Python(파이썬)] 2206 벽 부수고 이동하기 (1) | 2021.03.03 |
---|---|
[백준/Python(파이썬)] 1261 알고스팟 (0) | 2021.03.03 |
[백준/Python(파이썬)] 1208 부분수열의 합2 덜 풀었음 (0) | 2021.03.02 |
[백준/Python(파이썬)] 14226 이모티콘 (0) | 2021.02.17 |
[백준/Python(파이썬)] 2138 전구와 스위치 (0) | 2021.02.17 |