문제출처 : https://www.acmicpc.net/problem/1931
그리디 알고리즘을 이용하여 해결하는 문제이다.
고려사항
1. 회의실이 1개라는 것에 주목하여야 한다.
2. 최대한 많은 회의를 하기 위해선 회의가 빨리 끝나는 순서대로 진행해야 한다.
3. 회의가 끝나는 시간이 동일하다면 먼저 시작하는 회의를 택한다.
필자는 3번 조건을 늦게 깨달아서 채점 99%에서 맞왜틀을 많이 시전했다.
import sys
n = int(input())
def solve(n):
data = []
for i in range(n):
s,e = map(int,sys.stdin.readline().split(" "))
data.append((s,e))
count = 0 # 최종적으로 사용될 회의실 수
endtime = -1 # for 문을 반복하며 체크해줘야 하는 회의끝나는 시간
data = sorted(data,key=lambda x:(x[1],x,[0]))
# 정렬기준을 첫 번째는 회의가 끝나는 시간, 두번째를 회의 시작시간으로 하여 3번 고려사항을 고려하였음.
for i in range(len(data)):
start = data[i][0]
end = data[i][1]
if start >= endtime:
endtime = end
count +=1
return print(count)
solve(n)