반응형
입력 & 출력
각 회의 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)
반응형
'개발 > 알고리즘' 카테고리의 다른 글
[백준] BFS - 2178번 미로탐색 (0) | 2021.09.28 |
---|---|
[백준] BFS - 1926번 그림 (0) | 2021.08.30 |
[백준] 그리디 - 11047번 동전 0 (0) | 2021.04.29 |
[백준] 브루트포스 - 14888번 연산자 끼워넣기 (0) | 2021.04.29 |
[LeetCode] 841. keys and Rooms (0) | 2021.04.20 |