Study/SWEA

5202. [파이썬 S/W 문제해결 구현] 3일차 - 화물 도크

줴림 2025. 4. 24. 01:12

이번 문제는 '화물 도크' 문제이다. 간단하게 설명하면, 0시부터 24시까지 사용 가능한 도크를 최대 몇 대의 화물차가 쓸 수 있는지를 묻고 있다.

T = int(input())
for test_case in range(1, T+1):
    N = int(input())
    arr = [list(map(int, input().split())) for _ in range(N)]

    sorted_arr = sorted(arr, key=lambda x: x[1])    # 종료 시간 기준 정렬

    answer = 0      # 최대 이용 가능한 화물차 개수
    now_e = 0       # 앞 신청서 종료 시간

    for i in range(N):
        s = sorted_arr[i][0]    # 시작 시간
        e = sorted_arr[i][1]    # 종료 시간

        if now_e <= s:       # 앞 신청서 종료 시간보다 뒷 신청서 시작 시간 늦어야 함
            answer += 1
            now_e = e

    print(f"#{test_case} {answer}")

 

처음에 시작 시간으로 정렬할지 종료 시간으로 정렬할지 고민 좀 했었다. 근데 아무래도 비교하는 주체가 종료 시간이다보니, 종료 시간 기준으로 정렬하는 게 좋을 것 같았다.