[Greedy search] 1931_회의실 배정
내 풀이
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import sys
#입력
N = int(input())
reserve = []
finish = 0
answer = 0
for i in range(N):
start,end = map(int, sys.stdin.readline().split())
reserve.append([start,end])
#풀이
reserve.sort(key = lambda x:(x[1],x[0]))
for i in reserve:
if i[1] >= finish and i[0] >= finish:
answer += 1
finish = i[1]
else:
pass
print(answer)
reserve
: ([시작시간,종료시간]) 의 형태로 저장되는 listfinish
: 종료시간 재정의하여 저장
입력을 받아 map 함수를 사용하여 int 형으로 list 에 저장한다.
종료시간으로 정렬 후 시작시간으로 정렬한 뒤, 시작시간,종료시간이 전 회의 종료시간보다 크거나 같을 때 카운트를 추가하고 종료시간을 재정의한다
회고
정답을 맞추기 전 5번의 제출을 틀렸는데, 원인은 정렬의 문제라고 생각했다
1
reserve.sort(key = lambda x:(x[1],x[0]))
이렇게 종료시간으로 정렬한 뒤 시작시간으로 정렬해주었는데, 오답에서는 종료시간으로만 정의하여 틀렸던 것 같다.