반응형
https://www.acmicpc.net/problem/1697
1697번: 숨바꼭질
수빈이는 동생과 숨바꼭질을 하고 있다. 수빈이는 현재 점 N(0 ≤ N ≤ 100,000)에 있고, 동생은 점 K(0 ≤ K ≤ 100,000)에 있다. 수빈이는 걷거나 순간이동을 할 수 있다. 만약, 수빈이의 위치가 X일
www.acmicpc.net
from collections import deque
n, k = map(int, input().split())
q = deque()
q.append((n, 0))
visited = set()
visited.add(n)
while q:
x, d = q.popleft()
if x == k:
break
for next_x in [x-1, x+1, 2*x]:
if next_x not in visited and 0 <= next_x <= 100000:
visited.add(next_x)
q.append([next_x, d+1])
print(d)
collections의 deque를 이용하여 bfs를 구현하였습니다.
q에 노드와 노드의 깊이(시간)을 저장하고 visited에 방문처리합니다.
그리고 bfs 알고리즘을 수행하는데 수빈이가 이동할 수 있는 x-1, x+1, 2*x를 차례로 확인합니다.
visited에 등록되어 있지 않고 조건 범위내에 위치한다면 방문처리를하고 q에 깊이(시간)을 하나 증가시켜서 저장합니다.
bfs의 종료조건은 x와 k가 동일할 때 종료합니다.
bfs가 종료되면 깊이(시간) d를 반환합니다.
반응형
'코딩테스트' 카테고리의 다른 글
[코딩테스트] 백준 숨바꼭질3(13549) 파이썬(Python) (0) | 2023.04.13 |
---|---|
[코딩테스트] 프로그래머스 연속된 부분 수열의 합 파이썬(Python) (0) | 2023.04.11 |
[코딩테스트] 백준 두 수의 합(3273) 파이썬(Python) (0) | 2023.04.10 |
[코딩테스트] 프로그래머스 추억 점수 파이썬(Python) (0) | 2023.04.07 |
[코딩테스트] 백준 수열(2559) 파이썬(Python) (0) | 2023.04.07 |