Published:
Updated:

  • 예전에 풀었던 문제인데 다시 풀었다.


Solution

import sys
from typing import List


def solution(meetings: List[List[int]]) -> int:
    answer = 0

    # x[1]: end 시간이 빠를수록 최대에 가까움, 그러므로 가장 먼저 정렬
    # x[0]: end 시간과 start 시간이 가까울수록 최대에 가까움
    sorted_meetings = sorted(meetings, key=lambda x: (x[1], x[0]))

    before_end = 0
    for m in sorted_meetings:
        # 계산 순서: end -> start
        current_start, current_end = m[0], m[1]

        if current_start >= before_end:
            answer += 1

            # 현재의 end로 초기화
            before_end = current_end

    return answer


N = int(input())

meetings = []
for _ in range(N):
    meetings.append(list(map(int, sys.stdin.readline().split())))

print(solution(meetings))


Reference

Leave a comment