File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 44
55### 성능 요약
66
7- 메모리: 7168 KB, 시간: 8 ms
7+ 메모리: 73020 KB, 시간: 12 ms
88
99### 분류
1010
1111너비 우선 탐색, 그래프 이론, 그래프 탐색
1212
1313### 제출 일자
1414
15- 2021년 7월 25일 21:14:38
15+ 2025년 1월 17일 00:03:53
1616
1717### 문제 설명
1818
Original file line number Diff line number Diff line change 1+ final class Queue {
2+ private var queue = [ Int? ] ( )
3+ var head = 0
4+ var isEmpty : Bool {
5+ return queue. count - head == 0
6+ }
7+ func enqueue( _ element: Int ) {
8+ queue. append ( element)
9+ }
10+ func dequeue( ) -> Int ? {
11+ guard !isEmpty else { return nil }
12+ let element = queue [ head]
13+ queue [ head] = nil
14+ head += 1
15+ return element
16+ }
17+ }
18+
19+ let nk = readLine ( ) !. split { $0 == " " } . map { Int ( String ( $0) ) ! }
20+ let ( n, k) = ( nk [ 0 ] , nk [ 1 ] )
21+ var moved = [ Int] ( repeating: 0 , count: 100_001 )
22+ func solution1697( n: Int , k: Int ) -> Int {
23+ let queue = Queue ( )
24+ queue. enqueue ( n)
25+ while !queue. isEmpty {
26+ let curPos = queue. dequeue ( ) !
27+ if curPos == k { return moved [ curPos] }
28+ if curPos + 1 <= 100_000 && moved [ curPos + 1 ] == 0 {
29+ moved [ curPos + 1 ] = moved [ curPos] + 1
30+ queue. enqueue ( curPos + 1 )
31+ }
32+ if curPos - 1 >= 0 && moved [ curPos - 1 ] == 0 {
33+ moved [ curPos - 1 ] = moved [ curPos] + 1
34+ queue. enqueue ( curPos - 1 )
35+ }
36+ if curPos * 2 <= 100_000 && moved [ curPos * 2 ] == 0 {
37+ moved [ curPos * 2 ] = moved [ curPos] + 1
38+ queue. enqueue ( 2 * curPos)
39+ }
40+ }
41+ return - 1
42+ }
43+
44+ let answer = solution1697 ( n: n, k: k)
45+ print ( answer)
You can’t perform that action at this time.
0 commit comments