Skip to content

Commit a81c2f8

Browse files
committed
[Silver I] Title: 숨바꼭질, Time: 12 ms, Memory: 73020 KB -BaekjoonHub
1 parent 4b87f59 commit a81c2f8

2 files changed

Lines changed: 47 additions & 2 deletions

File tree

백준/Silver/1697. 숨바꼭질/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,15 @@
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

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
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)

0 commit comments

Comments
 (0)