1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
import sys
input = sys.stdin.readline
n = int(input())
l = []
for i in range(n) :
l.append(list(map(int, input().split())))
l.sort(key = lambda x : x[0])
l.sort(key = lambda x : x[1])
now = 0
count = 0
for start, end in l :
if start >= now :
count = count + 1
now = end
print(count)
|
cs |
IDEA
회의들을 종료점이 빠른 순서대로 (=일찍 끝나는 순서대로) 정렬한다.
시간 now는 0에서 시작해서, 지금 회의실을 쓴 회의가 끝나면 그 회의의 end로 갱신된다.
now보다 늦게 시작하는 회의(= 회의실을 쓸 수 있는 회의)를 리스트에서 순서대로 찾아 회의실에 넣는다.
리스트가 일찍 끝나는 순으로 정렬되었으므로 매 선택마다 이렇게 찾은 회의가 회의실을 쓸 수 있는 회의 중에서는 가장 일찍 끝나는 회의이고, 이 선택의 반복이 가장 효율적인 사용이 된다.
'Week 01 ~ 04 : 알고리즘 문제 풀이' 카테고리의 다른 글
파이썬 백준 1700 멀티탭 스케줄링 (0) | 2021.11.27 |
---|---|
파이썬 백준 1946 신입 사원 (0) | 2021.11.27 |
파이썬 백준 1541 잃어버린 괄호 (0) | 2021.11.27 |
파이썬 백준 11047 동전 (0) | 2021.11.27 |
파이썬 백준 2253 점프 (0) | 2021.11.27 |