아이디어
- 바로 전에 올렸던 swea의 연산 문제와 완전 똑같다.
- https://ryuwc.tistory.com/112
- 위의 문제를 참고해주세요
풀이 및 해설(주석)
from collections import deque
def solve(num):
global rst
Q = deque()
# Q에 현재 숫자와 움직임의 숫자를 넣어준다. 현재는 0
Q.append((num, 0))
# 중복 탐색 방지를 위해 visit에 현재 숫자 넣어준다
visit.add(num)
while Q:
now, cnt = Q.popleft()
# 답이 나온 경우
if now == K:
rst = min(cnt, rst)
return
# 움직일 수 있는 숫자
can_move = [now+1, now-1, now*2]
for val in can_move:
# 중복 탐색 방지와 문제의 조건
if val not in visit and 0 <= val <= 100000:
Q.append((val, cnt+1))
visit.add(val)
N, K = map(int, input().split())
rst = 1e9
visit = set()
solve(N)
print(rst)
'백준' 카테고리의 다른 글
백준 7562 나이트의 이동 (파이썬) (1) | 2022.10.03 |
---|---|
백준 1941 소문난 칠공주 (파이썬) (0) | 2022.09.30 |
백준 1654 랜선 자르기 (이진 탐색) (파이썬) (0) | 2022.09.25 |
백준 2108 통계학 Counter 사용 (파이썬) (0) | 2022.09.25 |
백준 10451 순열 사이클 (파이썬) (0) | 2022.09.25 |