5202. 화물 도크
문제)
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는 테스트 케이스 번호)를 출력한 뒤, 답을 출력한다.
풀이)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
T = int(input())
for _ in range(T):
n = int(input())
li = []
# 시간을 가장 덜 차지하는 것부터 도크 사용권을 주기 위함
for i in range(n):
b, c = map(int, input().split())
a = c - b
li.append([a, b, c])
li.sort()
ans = 0
time = [False] * 25
for i in li:
if not sum(time[i[1]:i[2]]):
for j in range(i[1], i[2]):
time[j] = 1
ans += 1
print(f"#{_ + 1} {ans}")
|
cs |
문제 출처 : https://swexpertacademy.com/main/main.do
※ SW Expert 아카데미는 원칙적으로 문제를 무단 복제하는 것을 금지합니다.
학습용으로 문제를 가져왔으나, 문제가 될 시 수정 및 삭제하겠습니다.
'Develop > Python + SWEA' 카테고리의 다른 글
[SW Expert Academy] 5204. 병합 정렬 (0) | 2022.03.30 |
---|---|
[SW Expert Academy] 5203. 베이비진 게임 (0) | 2022.03.29 |
[SW Expert Academy] 5189. 전자카트 (0) | 2022.03.29 |
[SW Expert Academy] 5188. 최소합 (0) | 2022.03.29 |
[SW Expert Academy] 4615. 오셀로 게임 (0) | 2022.03.25 |