728x90
https://www.acmicpc.net/problem/1697
X위치가 결국 세가지 방법인 X-1, X+1, 2*X 로 이동할 수 있는데, bfs를 이용해서 최소시간을 찾도록 풀었다.
단, 최소시간을 찾아야 하므로 이미 방문한 위치는 다시 방문하지 않도록 visited 리스트를 통해서 방문 여부를 체크했다
걸린 시간은 노드의 위치와 함께 queue에 넣어서 queue에 append (순간 이동을 한 경우) 할때마다 time + 1을 했다.
# https://www.acmicpc.net/problem/1697
from collections import deque
n, k = map(int, input().split())
MAX = 100000
visited = [False] * (MAX+1)
def bfs():
queue = deque()
time = 0
queue.append((n, time))
while queue:
now, t = queue.popleft()
if now == k:
print(t)
break
for nx in [now+1, now-1, now*2]:
if 0 <= nx <= MAX and not visited[nx]:
visited[nx] = True
queue.append((nx, t+1))
bfs()
728x90
'Algorithm (PS)' 카테고리의 다른 글
kakao 두 큐 합 같게 만들기 Python (3) | 2022.09.24 |
---|---|
[백준[ 17609 회문 Python 풀이와 반례 (1) | 2022.09.23 |
[카카오] 비밀지도 Python 풀이 (1) | 2022.09.22 |
[백준] 7795 Python 풀이 (1) | 2022.09.21 |
leetcode 15. 3Sum Python 풀이 (0) | 2022.09.19 |