let N = Int(readLine()!)!
var array = [[Int]]()
var end = -1
var answer = 0
for _ in 0..<N {
let input = readLine()!.split(separator: " ").map{ Int(String($0))! }
array.append(input)
}
array.sort { val1, val2 in
if val1[1] == val2[1] {
return val1[0] < val2[0]
}
return val1[1] < val2[1]
}
array.forEach { meeting in
if meeting[0] >= end {
answer += 1
end = meeting[1]
}
}
print(answer)
- 그리디 알고리즘 사용
- 현재 회의의 종료 시간이 빠를수록 다음 회의와 겹치지 않게 시작하는 데 유리하다. → 종료 시간이 빠른 순으로 정렬한 후 순회하면서 겹치지 않는 회의 시간을 적절하게 선택한다.
- 정렬할 때 종료 시간이 같은 회의가 있는 경우, 시작 시간이 빠른 순으로 정렬한다.