▶ 코드
import sys
def greedy(temp):
c = 0
start = 0
for t in temp:
if t[0] >= start:
start = t[1]
c += 1
print(start)
return c
if __name__ == "__main__":
N = int(sys.stdin.readline())
temp = []
for i in range(N):
start, end = map(int, sys.stdin.readline().split())
temp.append((start, end))
temp = sorted(temp, key=lambda t:t[0]) # 시작시간 기준으로 오름차순 정렬
print('시작시간 기준 = ',temp)
temp = sorted(temp, key=lambda t:t[1]) # 종료시간 기준으로 오름차순 정렬
print('시작+종료시간 기준 = ',temp)
# 1. 이렇게하면, 기존의 시작 시간 기준으로 정렬한 값들을 '최대한 유지'하려 하기 때문에, 종료 시간이 같다면, 시작 시간이 빠른 기준으로 정렬된 결과가 나타난다. ex.. (1,2), (2,2)
# 2. 종료 시간이 짧은것 먼저 정렬했기 때문에 더 많은 회의들을 추가할 수 있다.
# 시작시간 기준 = [(0, 6), (1, 4), (2, 13), (3, 5), (3, 8), (5, 7), (5, 9), (6, 10), (8, 11), (8, 12), (12, 14)]
# 시작+종료시간 기준 = [(1, 4), (3, 5), (0, 6), (5, 7), (3, 8), (5, 9), (6, 10), (8, 11), (8, 12), (2, 13), (12, 14)]
print(greedy(temp))
'코테 기본개념 > 그리디' 카테고리의 다른 글
[백준 1946] 신입 사원 (0) | 2020.05.05 |
---|---|
[백준 2875] 대회 or 인턴 (0) | 2020.05.05 |
[백준 10610] 30 (0) | 2020.05.05 |
[백준 5585] 거스름돈 (0) | 2020.05.03 |
[백준 11047] 동전 0 (0) | 2020.05.03 |
[백준 11399] ATM (0) | 2020.05.03 |