Published:
Updated:

  • Reference
  • 정렬 조건을 잘 이해할 수 있도록 노력하자.


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_end, current_start = m[1], m[0]

        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))

Leave a comment