Skip to content

Commit 11a05fe

Browse files
committed
[Silver IV] Title: 소가 길을 건너간 이유 3, Time: 8 ms, Memory: 79520 KB -BaekjoonHub
1 parent 7cb0416 commit 11a05fe

File tree

2 files changed

+69
-0
lines changed

2 files changed

+69
-0
lines changed
Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
# [Silver IV] 소가 길을 건너간 이유 3 - 14469
2+
3+
[문제 링크](https://www.acmicpc.net/problem/14469)
4+
5+
### 성능 요약
6+
7+
메모리: 79520 KB, 시간: 8 ms
8+
9+
### 분류
10+
11+
그리디 알고리즘, 정렬
12+
13+
### 제출 일자
14+
15+
2025년 12월 23일 17:50:38
16+
17+
### 문제 설명
18+
19+
<p>이웃 농장의 소가 길을 마구잡이로 건너는 것에 진절머리가 난 존은 극단의 결정을 내린다. 농장 둘레에 매우 큰 울타리를 짓는 것이다. 이렇게 하면 근처 농장 출신의 소가 들어올 일이 거의 없다. 이 일로 주변 소들이 분개하였다. 친구네 집에 놀러 갈 수 없을 뿐만 아니라, 매년 참가하던 국제 젖 짜기 올림피아드에도 올해는 참가할 수 없게 되었기 때문이다.</p>
20+
21+
<p>이웃 농장의 소 중 존의 농장에 방문할 수 있는 소가 조금 있긴 하지만, 그들도 안심할 수 있는 건 아니다. 존의 농장에 들어가는 문은 하나밖에 없고, 그 문을 통과하려면 감시관의 길고 긴 검문을 받아야 한다. 여러 마리의 소가 한 번에 들어가려고 하면 줄이 그 만큼 길어진다.</p>
22+
23+
<p>N마리의 소가 이 농장에 방문하러 왔다. 소가 도착한 시간과 검문받는 데 걸리는 시간은 소마다 다르다. (물론 같을 수도 있다.) 두 소가 동시에 검문을 받을 수는 없다. 예를 들어, 한 소가 5초에 도착했고 7초 동안 검문을 받으면, 8초에 도착한 그 다음 소는 12초까지 줄을 서야 검문을 받을 수 있다.</p>
24+
25+
<p>모든 소가 농장에 입장하려면 얼마나 걸리는 지 구해보자.</p>
26+
27+
### 입력
28+
29+
<p>첫 줄에 100 이하의 양의 정수 N이 주어진다. 다음 N줄에는 한 줄에 하나씩 소의 도착 시각과 검문 시간이 주어진다. 각각 1,000,000 이하의 양의 정수이다.<br></p>
30+
31+
### 출력
32+
33+
<p>모든 소가 농장에 입장하는 데 걸리는 최소 시간을 출력한다.<br></p>
34+
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import Foundation
2+
3+
let n = Int(readLine()!)!
4+
var cows: [(Int, Int)] = []
5+
6+
for _ in 0..<n {
7+
if let line = readLine() {
8+
let parts = line.split(separator: " ")
9+
let arrive = Int(parts[0])!
10+
let checkTime = Int(parts[1])!
11+
cows.append((arrive, checkTime))
12+
}
13+
}
14+
15+
cows.sort { a, b in
16+
if a.0 == b.0 {
17+
return a.1 < b.1
18+
}
19+
return a.0 < b.0
20+
}
21+
22+
var currentTime = 0
23+
24+
for cow in cows {
25+
let arrive = cow.0
26+
let check = cow.1
27+
28+
if currentTime < arrive {
29+
currentTime = arrive
30+
}
31+
32+
currentTime += check
33+
}
34+
35+
print(currentTime)

0 commit comments

Comments
 (0)