문제 설명
XX 회사는 트럭을 이용해 상품을 운반합니다. 트럭은 최대 무게가 한정되어있습니다. 직원은 트럭에 상품을 순서대로 실으며, 상품을 실을 수 없는 트럭은 바로 목적지로 출발합니다. 이때 우리는 모든 상품을 운반하는데 필요한 트럭은 최소 몇 대인지 구하려 합니다.
예를 들어, 각 상품의 스펙이 다음과 같고, 트럭의 허용 무게가 300, 실어야 할 상품이 ["toy", "snack", "snack"]라고 합니다.
상품 이름 무게
toy 70
snack 200
이 경우 첫째 상품과 둘째 상품은 같은 트럭에 들어가지만, 셋째 상품은 다른 트럭에 넣어야 합니다. 따라서 필요한 트럭 수는 두 대 입니다.
상품 누적 무게 새 트럭
toy 70 불필요
snack 270 불필요
snack 200 필요
트럭의 허용 무게 max_weight와 상품의 스펙을 담은 배열 specs, 운반할 상품의 이름이 순서대로 들은 배열 names가 주어집니다. 이때, 상품을 순서대로 운반하기 위해 필요한 트럭 수를 리턴하는 함수, soution을 완성하세요.
제한 조건
max_weight는 1 이상 100,000 이하입니다.
specs의 길이는 1 이상 100,000 이하입니다.
specs의 원소는 [상품 이름, 상품 무게]를 나타냅니다.
상품 이름은 길이가 1 이상 10,000 이하인 문자열입니다.
상품 무게는 1 이상 max_weight 이하인 자연수를 나타내는 문자열입니다.
이름이 같은 상품은 없습니다.
names는 길이가 1 이상 10,000 이하인 배열입니다.
names의 원소는 모두 specs에 있는 상품입니다.
입출력 예
문제 풀이
def solution(max_weight, specs, names):
d = dict(specs) # 무게 정보 딕셔너리화
w = 0
t = 1
for n in names:
if w + int(d.get(n)) > max_weight: # 새로 실을 물품을 실을 경우 최대 허용 무게 초과 시
w = 0
t += 1 # 필요 트럭 수 1대 추가
w += int(d.get(n))
return t
'Minding's Programming > 프로그래머스 코딩테스트' 카테고리의 다른 글
[코딩테스트/Python] 프로그래머스 코딩테스트 - 주사위 게임 3 (0) | 2024.10.02 |
---|---|
[코딩테스트/Python] 프로그래머스 코딩테스트 - 사탕 담기 (0) | 2024.09.30 |
[코딩테스트/Python] 프로그래머스 코딩테스트 - 나머지 한 점 (1) | 2024.09.30 |
[코딩테스트/Python] 프로그래머스 코딩테스트 - 최솟값 만들기 (0) | 2024.09.30 |
[코딩테스트/Python] 프로그래머스 코딩테스트 - 기능 개발 (0) | 2024.09.30 |