https://www.acmicpc.net/problem/1697
BFS를 이용한 문제를 풀어봤다.
import sys
from collections import deque
def bfs():
q=deque()
q.append(n)
while q:
num=q.popleft()
if num==k:
print(loc[k])
break
for i in (num-1,num+1,num*2):
if 0<=i<=200000 and loc[i]==0:
loc[i]=loc[num]+1
q.append(i)
loc=[0]*200001
n,k=map(int,input().split())
bfs()
bfs는 수빈이의 위치를 queue에 넣고, 하나씩 pop하면서
수빈이 위치를 num이라고 하면, num-1, num+1, 2*num으로 위치를 이동시키면서 초를 센다.
찾게 될 경우, 출력하는 함수이다.
'Computer Science > Algorithm' 카테고리의 다른 글
BOJ 2661: 좋은수열 [Python 3] (0) | 2022.12.24 |
---|---|
BOJ 14888: 연산자 끼워넣기 [Python 3] (1) | 2022.12.23 |
BOJ 9663: N-Queen [Python 3] (0) | 2022.12.22 |
BOJ 26092: 수학적인 최소 공통 조상 [Python 3] (0) | 2022.12.21 |
BOJ 26217: 별꽃의 세레나데 (Easy) (0) | 2022.12.18 |