Post

백준 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)

주석으로 달 설명

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

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

This post is licensed under CC BY 4.0 by the author.