본문 바로가기
TIL - 프로그래밍/Python 알고리즘

[SWEA] 5202. 화물 도크 - Python

by chaemj97 2022. 3. 29.
728x90

https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

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

0시부터 다음날 0시 이전까지 A도크의 사용신청을 확인해 최대한 많은 화물차가 화물을 싣고 내릴 수 있도록 하면, 최대

 

몇 대의 화물차가 이용할 수 있는지 알아내 출력하는 프로그램을 만드시오.

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

 

시작할 수 있다.

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

 

< ❓ 생각 >

  1. 종료 시간이 빠른 순서로 정렬
  2. 첫번째 활동 선택
  3. 선택한 활동 종료 시간보다 시작 시간이 늦거나 같은 작업 선택
  4. 반복


< 💻 코드 >

# 테스트 케이스 개수
T = int(input())
for tc in range(1,T+1):
    # 신청수
    N = int(input())
    # 작업 시작 시간, 종료 시간
    arr = [list(map(int,input().split())) for _ in range(N)]
    # 종료 시간 기준으로 내림차순 정렬
    arr.sort(key=lambda x: x[1])
    
    # 이전 종료 시간
    end = 0
    cnt = 0
    
    for s,e in arr:
        # 시작 시간이 이전 종료 시간보다 늦어야함(같아도 됨)
        if s >= end:
            end = e
            cnt += 1
            
    print(f'#{tc} {cnt}')


< ❗ >

2번째 값 기준 잡고 내림차순 정렬

arr.sort(key=lambda x: x[1])
728x90
반응형

댓글