Skip to content

Commit 48d7a56

Browse files
committed
[BOJ]#1697. 숨박꼭질/실버1/42min
https://www.acmicpc.net/problem/1697
1 parent dc7e0d9 commit 48d7a56

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

Hongjoo/백준/숨박꼭질.py

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import sys
2+
from collections import deque
3+
input = sys.stdin.readline
4+
MAX = 100000
5+
# 1. N, K 입력변수 입력 받기
6+
N ,K = map(int, input().split())
7+
# 2. N과 K 가 같을 때 , 예외처리
8+
if N == K :
9+
print(0)
10+
exit()
11+
12+
# 3. BFS 로 K까지 도달하는데 최단 거리 출력하기
13+
q = deque([N])
14+
visited = [False] * (MAX + 1)
15+
visited[N] = True
16+
lv = 1
17+
#[1] while 을 최단거리(level) 만큼 반복
18+
while q:
19+
level_size = len(q)
20+
next_lv = []
21+
#[2] 현 lv 의 노드만 BFS 탐색 & 다음 lv 후보군 노드을 enqueue
22+
for _ in range(level_size) :
23+
cx = q.popleft()
24+
for nx in (cx-1 , cx+1 ,2*cx) :
25+
if 0 <= nx <= MAX:
26+
if nx == K : # 목적지 도착
27+
print(lv)
28+
exit()
29+
# 첫 방문
30+
if not visited[nx] :
31+
q.append(nx)
32+
next_lv.append(nx)
33+
# print(f"##{lv}= {level_size} => {next_lv}")
34+
lv +=1
35+
for x in next_lv :
36+
visited[x] = True

0 commit comments

Comments
 (0)