[백준] 회의실 배정 1931번

나의 풀이

N = int(input())
time = []
for i in range(N):
    time.append(list(map(int, input().split())))

time = sorted(time, key=lambda x: (x[1], x[0]))

last_time = time[0][1]
count = 1
for i in range(1, N):
    if last_time <= time[i][0]:
        last_time = time[i][1]
        count += 1
print(count)
  • 최대한 많은 회의실을 사용하기 위해 끝나는 시간을 기준으로 오름차순, 그리고 시작 시간을 기준으로 오름차순 정렬을 해주었다.
  • 그러면 맨 처음에 있는 시간이 시작시간이 되는데, 시작시간의 끝나는 시간을 last_time 변수에 담아둔다. 첫 번째 회의실의 시간이 정해졌기 때문에 카운트는 1부터 시작한다.
  • 반복을 돌면서 last_time보다 크거나 같은 다음 회의의 시작시간이 있다면 last_time을 해당 시간의 끝나는 시간으로 변경하고, count += 1을 해준다.

0개의 댓글