Algorithms/백준
[BOJ] 백준 1697. 숨바꼭질 - BFS
devran
2024. 6. 12. 11:19
반응형
🥈 숨바꼭질
https://www.acmicpc.net/problem/1697
💡 아이디어
BFS라는 것을 알고 풀어서 접근은 간단했다!
- 시작점을 큐에 넣어주기
- 큐에 있는 숫자 개수 만큼 탐색하기
- 각각의 숫자를 +1, -1, *2로 계산하여 범위가 맞으면 큐에 넣어주기
🖊️ 풀이
# 숨바꼭질
from collections import deque
import sys
input = sys.stdin.readline
n, k = map(int, input().split())
q = deque()
q.append(n) # 시작점을 큐에 넣어준다
visited = [False] * (200001)
visited[n] = True # 시작점은 방문처리
cnt = 0
while q:
for _ in range(len(q)):
x = q.popleft()
if x == k:
print(cnt)
sys.exit(0)
for nx in (x-1, x+1, x*2):
if 0 <= nx <= 200000 and not visited[nx]:
visited[nx] = True
q.append(nx)
cnt += 1
- 방문할 숫자의 범위
- 숫자를 찾으면 sys.exit(0)으로 프로그램을 종료하는 것
위 두 사항을 해결하느라 시간이 좀 걸렸다.
반응형