▶ 코드

 

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