Skip to content

Commit 857dd63

Browse files
committed
[Silver II] Title: 소가 길을 건너간 이유 5, Time: 12 ms, Memory: 80300 KB -BaekjoonHub
1 parent 47cd9a4 commit 857dd63

2 files changed

Lines changed: 58 additions & 0 deletions

File tree

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
# [Silver II] 소가 길을 건너간 이유 5 - 14465
2+
3+
[문제 링크](https://www.acmicpc.net/problem/14465)
4+
5+
### 성능 요약
6+
7+
메모리: 80300 KB, 시간: 12 ms
8+
9+
### 분류
10+
11+
누적 합, 슬라이딩 윈도우
12+
13+
### 제출 일자
14+
15+
2025년 12월 23일 17:54:20
16+
17+
### 문제 설명
18+
19+
<p><a href="https://www.acmicpc.net/problem/14468">농부 존의 농장에 원형 길이 있다</a>고 했지만, 길은 그뿐만이 아니다. 그 옆에 일자형 길이 있는데, 1번부터 N번까지의 번호가 붙은 횡단보도 N (1 ≤ N ≤ 100,000)개로 이루어져 있다. 교통사고를 방지하기 위해 존은 각 횡단보도에 신호등을 설치해 놓았다. 그러던 어느 날, 강력한 뇌우로 인해 몇몇 신호등이 망가졌다. 존은 연속한 K개의 신호등이 존재하도록 신호등을 수리하고 싶다. 이번에도 우리가 존을 도와주자.</p>
20+
21+
### 입력
22+
23+
<p>첫 줄에 N, K, B (1 ≤ B,K ≤ N)가 주어진다. 그 다음 B줄에는 고장난 신호등의 번호가 하나씩 주어진다.</p>
24+
25+
### 출력
26+
27+
<p>정상적으로 작동하는 연속 K개의 신호등이 존재하려면 최소 몇 개의 신호등을 수리해야 하는지 출력한다.</p>
28+
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import Foundation
2+
3+
let firstLine = readLine()!.split(separator: " ").map { Int($0)! }
4+
let N = firstLine[0]
5+
let K = firstLine[1]
6+
let B = firstLine[2]
7+
8+
var broken = Array(repeating: 0, count: N + 1)
9+
10+
for _ in 0..<B {
11+
let idx = Int(readLine()!)!
12+
broken[idx] = 1
13+
}
14+
15+
var currentBroken = 0
16+
for i in 1...K {
17+
currentBroken += broken[i]
18+
}
19+
20+
var answer = currentBroken
21+
22+
if K < N {
23+
for i in K+1...N {
24+
currentBroken += broken[i]
25+
currentBroken -= broken[i - K]
26+
answer = min(answer, currentBroken)
27+
}
28+
}
29+
30+
print(answer)

0 commit comments

Comments
 (0)