오늘의 문제
https://www.acmicpc.net/problem/1931
이해하는데에 시간이 많이 걸린 문제였다. 구신의 도움을 받았다…
포인트 쳌쳌
그리디스럽게 생각해본다.
최대한 많은 수의 회의가 가능하게 하려면 회의 시간이 적게 걸리는 회의가 많아야 한다.
또한, 회의 시작 시간이 같다면 종료시간이 빠른 것이 선택되어야 한다. 때문에
- 회의가 끝나는 시간으로 오름차순, 끝나는 시간이 같다면 시작 시간 기준 오름차순으로 정렬해야 한다.
- 회의 시간이라고 해서 그것이 꼭 24시간제라는 편견은 버리자. 입력 조건 확인. (무려 2의 31승이다….)
풀이 코드
import sys
n = int(input())
con = []
for i in range(n):
a = list(map(int, sys.stdin.readline().split()))
con.append(a)
con.sort(key = lambda x: (x[1], x[0]))
#print(con)
finish = con[0][1]
cnt = 1
for i in range(1, len(con)):
if finish <= con[i][0]:
cnt += 1
finish = con[i][1]
#print(con[i][0], con[i][1])
print(cnt)
참고자료
https://suri78.tistory.com/26