Algorithm

[백준] 1931 회의실 배정 / 파이썬

suhyeon chae 2023. 7. 9. 01:01
https://www.acmicpc.net/problem/1931

입력
11
1 4
3 5
0 6
5 7
3 8
5 9
6 10
8 11
8 12
2 13
12 14​


출력

4

 

풀이
n = int(input())
meet = []
count = 1

for _ in range(n):
    start, end = map(int, input().split())
    meet.append([start, end])

# 회의가 종료 시간을 기준으로 먼저 정렬 후, 끝나는 시간이 같을 경우에는 시작 시간으로 정렬
meet.sort(key=lambda x: (x[1], x[0]))

# 첫 번째 회의의 종료 시간을 대입
end = meet[0][1]

# 두 번째 회의부터 체크
for i in range(1, len(meet)):
    start = meet[i][0] # 다음 회의의 시작 시간

    if start >= end: # 이전에 진행된 회의의 종료 시간보다 다음 회의의 시작 시간이 더 크다면 이용 가능
        count += 1
        end = meet[i][1] # 가능한 회의의 종료 시간을 대입

print(count)