티스토리 뷰
5201. [파이썬 S/W 문제해결 구현] 3일차 - 컨테이너 운반
어려웠던 점
- 그리디 방식(큰 것부터 정렬) 하는 아이디어를 생각해내지 못했다.
- 리스트 두 개를 받아오는 함수라서, 이중 for문을 돌려야 하나? 란 생각이 들어 혼란스러웠다.
해결방안
- 구하고자 하는 것은 cargo_weight 데이터이므로 두 리스트를 비교할 때 이중 for문을 돌릴 필요가 없다.
- 한개의 리스트를 기준으로 조건문을 걸고, 조건을 충족하면 인덱스를 추가하는 방식으로 진행이 가능하다.
- 종료 시점은 인덱스가 특정 기준을 충족시켰을때 반복문을 중단하는 break를 사용한다.
예시코드
def max_cargo(cargo_weight, truck_ability):
sorted_cargo_weight = sorted(cargo_weight, reverse=True)
sorted_truck_ability = sorted(truck_ability, reverse=True)
idx = 0
total = 0
# 무거운 것부터 차례대로 담을 수 있는지 확인한다.
for weight in sorted_cargo_weight:
# 트럭 용량이 화물보다 크거나 같으면 화물을 추가하고 다음 트럭으로 넘어간다.
if weight <= sorted_truck_ability[idx]:
total += weight
idx += 1
# 더 이상 담을 트럭이 없다면 탐색을 종료한다.
if idx == len(sorted_truck_ability):
break
return total
T = int(input())
for tc in range(1, T + 1):
N, M = map(int, (input().split()))
cargo_weight = list(map(int, input().split())) # [int(x) for x in input().split()]
truck_ability = list(map(int, input().split())) # [int(x) for x in input().split()]
print("#{} {}".format(tc, max_cargo(cargo_weight, truck_ability)))
5202. [파이썬 S/W 문제해결 구현] 3일차 - 화물 도크
해결방안
- 인풋을 튜플을 담은 리스트 형태로 받아온다.
- 종료 시간을 기준으로 정렬한다. (람다함수 사용하여 sort함수를 key 기준으로 정렬)
- 리스트를 순회하며 가장 빠르게 시작하는 화물차를 차례로 담는다.
- 화물차의 수를 최종 프린트한다.
import sys
sys.stdin = open('input.txt')
def cargo_calender(board):
# 종료 시간을 기준으로 정렬한다.
sorted_list = sorted(board, key=lambda cargo: cargo[1])
# 가장 빠른 종료시간을 담는다.
cargo_schedule = [sorted_list[0]]
# 가장 빠르게 시작하는 화물차를 차례로 담는다.
for cargo in sorted_list:
if cargo[0] >= cargo_schedule[-1][1]:
cargo_schedule.append(cargo)
return cargo_schedule
T = int(input())
for tc in range(1, T + 1):
N = int(input())
# 튜플이 담긴 리스트로 받아온다.
board = [tuple(map(int, input().split())) for _ in range(N)]
print("#{} {}".format(tc, len(cargo_calender(board))))
'Algorithm' 카테고리의 다른 글
[1-2][DP] 거듭제곱 빠르게 구현하기 (0) | 2021.10.12 |
---|---|
[1-1][Brute Force] 투자귀재 규식이1 (0) | 2021.10.12 |
[DP] 피보나치 수열 메모이제이션 (0) | 2021.10.12 |
[Programmers][stack/queue] 기능개발 python (211012) (0) | 2021.10.12 |
[SWEA][완전탐색] 순열, 조합, 부분집합 (0) | 2021.10.05 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- ssafy6기
- 무료폰트추천
- ssafy후기
- 개발자책추천
- 폰트추천
- 폰트
- 개발도서추천
- 개발자커리
- 싸피
- 개발자
- ssafy합격후기
- 맥과윈도우로깃허브
- 임대차3법
- 한글무료폰트추천
- 상업용무료폰트
- intj여자
- 개발언어순위
- 싸피6기
- 개발자로드맵
- 디즈니얼굴
- SSAFY
- 깃허브계정
- ssafy결과
- 깃허브계정2개
- 브왈라
- 개발언어추천
- 코딩도서
- 클린코드
- 클린코더
- 개발자도서추천
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
글 보관함