개발/알고리즘
[백준] 그리디 - 1931번 회의실 배정
Liber21
2021. 4. 29. 16:42
반응형
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
입력 & 출력
각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고,
각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자.
풀이
회의 시간은 쌓여간다.
회의 시간이 종료되는 시간 순으로 회의 시간들을 정렬한다.
만약 종료되는 시간이 같을 경우, 회의가 먼저 시작하는 순으로 정렬한다.
시작하는 순으로 정렬하는 이유는, 회의의 시작 시간이 현재 시간보다 적을 경우 스킵해야하기 때문이다.
Swift 전체 코드
let n = Int(readLine()!)!
var meetings : [(Int, Int)] = []
var (max, count) = (0, 0)
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map { Int($0)! }
meetings.append((input.first!, input.last!))
}
meetings.sort { return $0.1 == $1.1 ? $0.0 < $1.0 : $0.1 < $1.1}
for i in meetings {
if max <= i.0 {
count += 1
max = i.1
}
}
print(count)
반응형