문제 링크 : www.acmicpc.net/problem/1931
그리디 문제로 최대 테스트 케이스가 100000개이므로 최대 O(nlogn)알고리즘으로 작성해야 될 것 같았다.
회의가 끝나는 시간에 대해서 오름차순으로, 끝나는 시간이 같은 부분에서는 시작하는 시간에 대해서 오름차순으로 정렬하도록 하였다. 이를위해 sort()를 이용한 다중정렬을 이용하였다.
import sys
N = int(sys.stdin.readline())
meetings = []
for _ in range(N):
tp = tuple(map(int, sys.stdin.readline().rstrip().split())) # (start, end)
meetings.append(tp)
meetings.sort(key=lambda tp: (tp[1], tp[0]))
result = 0
end_time = 0
for meeting in meetings:
start_time = meeting[0]
if start_time >= end_time:
end_time = meeting[1]
result += 1
print(result)
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1932번 - 정수 삼각형 (0) | 2021.01.02 |
---|---|
[백준] 9461번 - 파도반 수열 (0) | 2021.01.02 |
[백준] 1541번 - 잃어버린 괄호 (0) | 2020.12.29 |
[백준] 1920번 - 수 찾기 (0) | 2020.12.24 |
[백준] 10828번 - 스택 (0) | 2020.12.23 |