내 풀이

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: ([시작시간,종료시간]) 의 형태로 저장되는 list
  • finish: 종료시간 재정의하여 저장

입력을 받아 map 함수를 사용하여 int 형으로 list 에 저장한다.

종료시간으로 정렬 후 시작시간으로 정렬한 뒤, 시작시간,종료시간이 전 회의 종료시간보다 크거나 같을 때 카운트를 추가하고 종료시간을 재정의한다

회고

정답을 맞추기 전 5번의 제출을 틀렸는데, 원인은 정렬의 문제라고 생각했다

1
reserve.sort(key = lambda x:(x[1],x[0]))

이렇게 종료시간으로 정렬한 뒤 시작시간으로 정렬해주었는데, 오답에서는 종료시간으로만 정의하여 틀렸던 것 같다.