File tree Expand file tree Collapse file tree 1 file changed +41
-0
lines changed
Expand file tree Collapse file tree 1 file changed +41
-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+ N , K = map (int , input ().split ())
5+ MAX = 100001
6+ # answer = []
7+ #[1] 최단 시간 찾기
8+ visited = [[MAX , MAX ] for _ in range (MAX + 1 )]# level 기입
9+
10+ t = 0
11+ next_node = [N ]
12+ q = deque ([N ])
13+ visited [N ] = [t ,N ] # 도착 시간 , 이전 node 위치 확인
14+
15+ #(예외처리) 출발지 = 도착지 같은 경우
16+ if K != N :
17+ while q :
18+ t += 1
19+ next_node = len (q )
20+ for i in range (next_node ) : # 현재 level의 node개수만큼 반복
21+ cx = q .popleft ()
22+ # print(f"cx {cx} , {next_node}")
23+ # 만약 목적 달성시 , 끝
24+ for nx in [cx - 1 , cx + 1 , cx * 2 ]:
25+ if 0 <= nx <= MAX and visited [nx ][0 ]>= MAX :
26+ q .append (nx )
27+ visited [nx ] = [t , cx ]
28+ # 현재 q -> 다음 level 의 노드만 남아있는 상태
29+ # 만약 K을 도달한 경우-> 최단 시간 저장
30+ if visited [K ][0 ]< MAX :
31+ break
32+ print (t )
33+ #[2] 역추적 - 최단 시간 경우 , 경로 추적
34+ re_visited = [K ]
35+ pt = K
36+ while pt != N :
37+ _ , pt = visited [pt ]
38+ re_visited .append (pt )
39+
40+ print (" " .join (map (str ,list (reversed (re_visited )))))
41+
You can’t perform that action at this time.
0 commit comments