한 개의 회의실을 N개의 회의에 대하여 겹치지 않고 사용할 수 있는 최대 회의 개수 구하기.
입력 | 출력 |
---|---|
11 1 4 3 5 0 6 5 7 3 8 5 9 6 10 8 11 8 12 2 13 12 14 | 4 |
: (시작 시간, 끝나는 시간)을 리스트에 저장하고 끝나는 시간 기준으로 오름차순 정렬한다.
첫번째 원소의 끝나는 시간을 변수에 담고 리스트를 돌면서 시작 시간이 설정한 끝나는 시간보다 크거나 같으면 그 원소의 끝나는 시간으로 업데이트하고 카운트를 업한다. --> 틀렸습니다.
끝나는 시간이 같은 경우도 고려해주어야한다.
만약 끝나는 시간이 같다면 빨리 시작하는 순서대로 정렬이 되어야 한다.
예를 들어,
2
2 2
1 2
의 경우, 이 상태로라면 (2,2)만 해당하여 1번 회의가 가능하다고 나오지만 정렬을 통해 (1 2)가 먼저 선택되면 (2 2)도 선택이 가능해지기 때문에 2번 회의가 가능하다.
따라서 끝나는 시간의 오름차순, 시작하는 시간의 오름차순으로 정렬해주어야한다!
n = int(input())
graph = []
for _ in range(n):
s, e = map(int, input().split())
graph.append((s, e))
graph.sort(key=lambda x : (x[1], x[0]))
e = graph[0][1]
ans = 1
for i in range(1, len(graph)):
if graph[i][0] >= e:
ans += 1
e = graph[i][1]
print(ans)