반응형
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 |