๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/1931
๐ ๋์ ํ์ด
์์ดํจ๋๋ก ๊ทธ๋ฆผ์ ๊ทธ๋ฆฌ๋ฉด์ ์๊ฐํด๋ณด๋, ์ฃผ์ด์ง ์ ๋ ฅ๊ฐ์ ์ ์ ๋ ฌํ๋ค๋ฉด, ์์๋๋ก ๋ํด๊ฐ๋ฉด์ ์ ๋ต์ ์ฐพ์ ์ ์์ ๊ฒ ๊ฐ์๋ค.
์ฐ์ ๋ง์ ํ์๋ฅผ ํ๊ธฐ ์ํด์๋, ๋์ผํ ์๊ฐ์ ์์ํ๋ ํ์๋ ์ต๋ํ ๋นจ๋ฆฌ๋๋์ผํ๋ค. ์ด์ ๋ ๋นจ๋ฆฌ ๋๋ ์๋ก ๋ค์์ ๊ณ ๋ คํด๋ณผ ํ์๊ฐ ๋ง๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋์ ์์์๊ฐ์ ์์๋ก ๋จผ์ ์ ๋ ฌํด์ค๋ค, ์ข ๋ฃ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ๋ค์ ํ ๋ฒ ์ ๋ ฌ์์ผ์ฃผ์ด์ผ ํ๋ค.
์ ๋ ฌ๋ ํ์ prevEndTime์ด๋ผ๋ ๋ณ์์ ๋๋๋ ์๊ฐ์ ๋ฃ์ด์ฃผ๊ณ , ๊ฐ ํ์๋ง๋ค start ์๊ฐ์ ๋น๊ตํด์ค๋ค. ์์์๊ฐ์ด prevEndTime๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ์ผ๋ฉด cnt ๋ฅผ 1 ์ฆ๊ฐ์์ผ์ฃผ๊ณ , prevEndTime์ ๋ฐ๊ฟ์ค๋ค.
๐ ์ ๋ต ์ฝ๋
import Foundation
// input
let n = Int(readLine()!)!
var meeting = [[Int]]()
for _ in 0..<n {
let temp = readLine()!.split(separator: " ").map { Int(String($0))! }
meeting.append(temp)
}
// main
func solution(_ meeting: [[Int]]) -> Int {
// meeting ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
var sortedMeetings = meeting
sortedMeetings.sort{ return $0[0] < $1[0] }
sortedMeetings.sort{ return $0[1] < $1[1] }
var cnt = 0
var prevEndTime = 0
for meeting in sortedMeetings {
let start = meeting[0]
let end = meeting[1]
if start >= prevEndTime {
cnt += 1
prevEndTime = end
}
}
return cnt
}
print(solution(meeting))