백준 - 회의실 배정 (1931)

Seoyoung Lee·2023년 1월 30일
0

알고리즘

목록 보기
32/104
post-thumbnail
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)
  • 그리디 알고리즘 사용
  • 현재 회의의 종료 시간이 빠를수록 다음 회의와 겹치지 않게 시작하는 데 유리하다. → 종료 시간이 빠른 순으로 정렬한 후 순회하면서 겹치지 않는 회의 시간을 적절하게 선택한다.
  • 정렬할 때 종료 시간이 같은 회의가 있는 경우, 시작 시간이 빠른 순으로 정렬한다.
profile
나의 내일은 파래 🐳

0개의 댓글