백준 문제 링크
정수 a를 k로 만들기
- BFS를 사용했다.
- 방문 처리할 변수 visited를 만들었다.
- bfs 함수 내에서 queue에 (현재 숫자, cnt)를 넣어서
현재 숫자가 목표 숫자와 같다면 cnt를 반환
현재 숫자 + 1 <= K 이고 방문하지 않았다면 방문 처리 후 queue에 삽입
현재 숫자 * 2 <= K 이고 방문하지 않았다면 방문 처리 후 queue에 삽입- 마지막으로 bfs(A)를 실행시키면 끝!
from collections import deque
A,K = map(int, input().split())
visited = [False] * (K+1)
def bfs(x):
queue = deque()
queue.append((x,0))
visited[x] = True
while queue:
v, cnt = queue.popleft()
if v == K:
return cnt
if v+1 <= K:
if not visited[v+1]:
visited[v+1] = True
queue.append((v+1, cnt + 1))
if v * 2 <= K:
if not visited[v * 2]:
visited[v * 2] = True
queue.append((v * 2, cnt + 1))
print(bfs(A))