File tree Expand file tree Collapse file tree 1 file changed +36
-0
lines changed
Expand file tree Collapse file tree 1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change 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
You can’t perform that action at this time.
0 commit comments