- BFS를 이용하여 풀었다.
from collections import deque
N,M = map(int,input().split())
used = [21e8] * 100001
result = []
def bfs(N,cnt):
q = deque([(N,cnt)])
while q:
N,cnt = q.popleft()
if 0 <= N < 100001:
if cnt < used[N]: # used배열에 도착했을때 cnt의 최소값만 갱신
used[N] = cnt
else:
continue
q.append([N-1,cnt+1])
q.append([N+1,cnt+1])
q.append([N*2,cnt])
bfs(N,0)
print(used[M]) # used 배열에는 시작점으로부터 각 1~100,000까지의 위치에 도착했을 때
# 가장 시간이 적게 소요된 값만 있으므로 동생의 인덱스값을 출력해주면 된다.
'Python > 백준' 카테고리의 다른 글
[백준/Python] 1753 최단경로 (0) | 2022.10.01 |
---|---|
[백준/Python] 1916 최소비용 구하기 (0) | 2022.10.01 |
[백준/Python] 10026 적록색약 (1) | 2022.09.30 |
[백준/Python] 4963 섬의 개수 (1) | 2022.09.30 |
[백준/Python] 11724 연결 요소의 개수 (0) | 2022.09.30 |