import sys
input=sys.stdin.readline
n= int(input())
arr=[[0]*2 for _ in range(n)]
for i in range(n):
arr[i][0], arr[i][1] = map(int, input().split())
arr=sorted(arr, key=lambda arr:arr[0])
arr=sorted(arr, key=lambda arr:arr[1])
count=1
end_time = arr[0][1]
for i in range(1, n):
if arr[i][0]>=end_time:
end_time=arr[i][1]
count+=1
print(count)
1. 먼저 빨리 시작하는 순서대로 정렬해 놓고, 그 상태에서 빨리 끝나는 순서대로 정렬함
--> 1순위는 끝나는 시간, 2순위는 시작하는 시간으로 정렬된다.
2. (end_time 갱신하는 for문에서)
이미 끝나는 시간 오름차순 정렬 해두었으므로, 현재 end_time보다 작기만 하면 뒤의 회의들보다 빨리 끝나는 게 맞을까? 고민할 필요 없음.
'알고리즘 PS > Greedy' 카테고리의 다른 글
그리디 큰 수의 법칙 (0) | 2024.06.06 |
---|---|
백준 #16953 A→B (0) | 2024.05.07 |
백준 #11047번 동전 0 파이썬 (1) | 2024.01.30 |
백준 #11399 ATM 파이썬 (1) | 2024.01.30 |
백준 #2864 5와 6의 차이 (0) | 2023.10.02 |