1931 회의실 배정
업데이트:
1. 문제
문제는 링크에 들어가면 있다.
2. 정답 코드
문제의 내 정답 코드는 다음과 같다.
import sys
read = sys.stdin.readline
N = int(read())
time_table = []
times = []
for _ in range(N):
times.append(list(map(int,read().split())))
times.sort(key=lambda x:(x[1],x[0]))
time_table = [times[0]]
for i in range(1,len(times)):
start,end = times[i]
if start >= time_table[-1][1] :
time_table.append(times[i])
print(len(time_table))
3. 풀이 및 생각
문제 풀이
타임 테이블을 이어붙이는 문제의 핵심은 정렬이다. 끝나는 시간을 오름차순으로 정렬해서 빨리끝나는 것들을 최대한 이어 붙이는 것이 포인트! 단, 시작시간을 2차적인 정렬 기준으로 잡아 오름차순으로 해줘야하므로 array.sort(key=lambda x:(x[1],x[0])) 을 해주자.
이렇게 해서 이전에 끝난 시간보다 다음에 시작할 시간이 크거나 같으면 그 회의실시간을 이어붙인다. 이 때 정렬이 되어있으므로 끝나는 시간이 제일 빠른 것들 중에 선택될 것이다.
나의 생각
이거 또 못 풀었다.. 7월 12일에 풀었던건데 ㅜ; 다시보기 주말에 무조건 하자. 못푼건 또 까먹을 수 있다.