본문 바로가기

Algorithm

SWEA 5202 화물도크 (python)

반응형

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

[파이썬 S/W 문제해결 구현] 3일차

2021.04.20 - [분류 전체보기] - SWEA 5201 컨테이너 운반 (python)

2021.04.20 - [분류 전체보기] - SWEA 5203 베이비진 게임 (python)

 

문제

24시간 운영되는 물류센터에는 화물을 싣고 내리는 도크가 설치되어 있다.

0시부터 다음날 0시 이전까지 A도크의 사용신청을 확인해 최대한 많은 화물차가 화물을 싣고 내릴 수 있도록 하면, 최대 몇 대의 화물차가 이용할 수 있는지 알아내 출력하는 프로그램을 만드시오.

신청서에는 작업 시작 시간과 완료 시간이 매시 정각을 기준으로 표시되어 있고, 앞 작업의 종료와 동시에 다음 작업을 시작할 수 있다.

예를 들어 앞 작업의 종료 시간이 5시면 다음 작업의 시작 시간은 5시부터 가능하다.

[입력]

첫 줄에 테스트케이스의 수 T가 주어진다. 1<=T<=50

다음 줄부터 테스트 케이스의 별로 첫 줄에 신청서 N이 주어지고, 다음 줄부터 N개의 줄에 걸쳐 화물차의 작업 시작 시간 s와 종료 시간 e가 주어진다.

1<=N<=100, 0<=s<24, 0 < e <= 24

[출력]

각 줄마다 "#T" (T는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.

풀이

T = int(input())

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

    # 종료시간으로 정렬후 차근차근 겹치는 시간이 없도록 비교해본다.

    # 종료시간을 기준으로 정렬을 할것이다.
    sorted_info = sorted(info, key=lambda x: x[1])
    # 카운트 횟수
    cnt = 0
    # 현재 종료시간
    now = 0
    # 돌면서 검사
    for i in range(N):
        # 시작시간정의
        s = sorted_info[i][0]
        # 종료시간 정의
        e = sorted_info[i][1]
        # 만약 작업시간이 안겹친다면, 즉 종료시간보다 크거나 같다면
        if now <= s:
            # 할수있음
            cnt += 1
            # 종료 예정시간 갱신
            now = e


    print("#{} {}".format(tc, cnt ))

추가

  • lamda를 이용해서 정렬할 수 있었다.
    • lambda는 나중에 추가로 공부할 기회가 있다면 해보자
반응형

'Algorithm' 카테고리의 다른 글

SWEA 11454 Baby-gin Game (python)  (0) 2021.04.20
SWEA 5203 베이비진 게임 (python)  (0) 2021.04.20
SWEA 5201 컨테이너 운반 (python)  (0) 2021.04.20
BOJ 11501 주식 (python)  (0) 2021.04.20
SWEA 1859 백만 장자 프로젝트 (python)  (0) 2021.04.20