포스트

백준 1931번 python 풀이 - 회의실 배정

문제 링크

1931번

해결책

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
import sys

N = int(sys.stdin.readline().rstrip())

con_time = []

for _ in range(N):
    temp_start, temp_end = map(int, sys.stdin.readline().split())
    con_time.append((temp_start, temp_end))


con_time.sort(key=lambda x: (x[1], x[0]))

cnt = 0
used_time = 0
for j in range(0, len(con_time)):
    start, end = con_time[j]

    if start >= used_time:
        cnt += 1
        used_time = end


print(cnt)

주석으로 달 설명

그리디. 결국 정렬이 중요하다는 문제.

회의실을 가장 많이 배정하려면 어떻게 해야 할까! 라는 고민을 지속적으로 하다보면, 결국 회의의 종료시간을 기준으로 줄을 세우면 가능하다는 결론에 도달한다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.