[BOJ]1931_회의실배정

zioo·2022년 5월 10일
0

회의실배정

풀이

주어진 시작시간과 끝나는 시간들을 이용해서 가장 많은 회의의 수를 알기 위해서는 빨리 끝나는 회의 순서대로 정렬을 해야 한다. 이유는 빨리 끝날수록 뒤에서 고려해볼 회의가 많기 때문이다.

그래서 먼저 시작시간을 오름차순으로 정렬한 뒤, 끝나는 시간을 기준으로 한번 더 정렬을 해야 한다.
이미 시작시간이 오름차순으로 정렬된 상태이기 때문에 끝나는 시간으로 오름차순을 해주어도 자연히 끝나는 시간이 같을 때에는 시작시간의 오름차순으로 정렬이 되어있다.

코드

import sys
sys.stdin =open('in.txt','rt')
input = sys.stdin.readline 
N = int(input())
time = []

for _ in range(N):
  time.append(list(map(int,input().split())))

time.sort() # 시작 시간을 기준으로 오름차순
time = sorted(time, key=lambda a: a[1]) # 끝나는 시간을 기준으로 다시 오름차순
print(time)
last = 0 # 회의의 마지막 시간
cnt = 0 # 회의 개수

for i, j in time:
  if i >= last: # 시작시간이 회의의 마지막 시간보다 크거나 같을경우
    cnt += 1
    last = j

print(cnt)

0개의 댓글