728x90
https://swexpertacademy.com/main/learn/course/lectureProblemViewer.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
< 📝 문제 >
24시간 운영되는 물류센터에는 화물을 싣고 내리는 도크가 설치되어 있다.
0시부터 다음날 0시 이전까지 A도크의 사용신청을 확인해 최대한 많은 화물차가 화물을 싣고 내릴 수 있도록 하면, 최대
몇 대의 화물차가 이용할 수 있는지 알아내 출력하는 프로그램을 만드시오.
신청서에는 작업 시작 시간과 완료 시간이 매시 정각을 기준으로 표시되어 있고, 앞 작업의 종료와 동시에 다음 작업을
시작할 수 있다.
예를 들어 앞 작업의 종료 시간이 5시면 다음 작업의 시작 시간은 5시부터 가능하다.
< ❓ 생각 >
- 종료 시간이 빠른 순서로 정렬
- 첫번째 활동 선택
- 선택한 활동 종료 시간보다 시작 시간이 늦거나 같은 작업 선택
- 반복
< 💻 코드 >
# 테스트 케이스 개수
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
반응형
'TIL - 프로그래밍 > Python 알고리즘' 카테고리의 다른 글
[SWEA] 1860. 진기의 최고급 붕어빵 - Python (0) | 2022.03.30 |
---|---|
[SWEA] 5203. 베이비진 게임 - Python (0) | 2022.03.29 |
[SWEA] 5201. 컨테이너 운반 - Python (0) | 2022.03.29 |
[SWEW] 5189. 전자카트 - Python (0) | 2022.03.29 |
[SWEA] 5188. 최소합 - Python (0) | 2022.03.29 |
댓글