[Py_Lv1] 운송 트럭

Sunghun📈·2021년 5월 1일
0

프로그래머스

목록 보기
39/93
post-thumbnail

문제 설명

XX 회사는 트럭을 이용해 상품을 운반합니다. 트럭은 최대 무게가 한정되어있습니다. 직원은 트럭에 상품을 순서대로 실으며, 상품을 실을 수 없는 트럭은 바로 목적지로 출발합니다. 이때 우리는 모든 상품을 운반하는데 필요한 트럭은 최소 몇 대인지 구하려 합니다.

예를 들어, 각 상품의 스펙이 다음과 같고, 트럭의 허용 무게가 300, 실어야 할 상품이 ["toy", "snack", "snack"]라고 합니다.

이 경우 첫째 상품과 둘째 상품은 같은 트럭에 들어가지만, 셋째 상품은 다른 트럭에 넣어야 합니다. 따라서 필요한 트럭 수는 두 대 입니다.

트럭의 허용 무게 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에 있는 상품입니다.

입출력 예

접근법

그림을 그려 주어진 예제를 하나씩 풀어간다면 쉽게 해결할 수 있는 문제이다.

여기서 몇가지 생각해 볼것은 반환값이 될 answer의 시작값 그리고 내용물이
담기지 못할만큼의 크기라 새로운 트럭을 이용해도 실어야 되는 물건의
무게를 꼭 빼야한다는 것 정도일 것이다.

주어진 문제 그대로를 구현하면 되는 문제였으므로 별도의 설명은 없다.😄

=============================================================

def solution(max_weight, specs, names):
    answer = 1
    specs = dict(specs)
    m = max_weight
    
    for i in names:
        if m >= int(specs[i]):
            m -= int(specs[i])
        else:
            answer += 1
            m = max_weight
            m -= int(specs[i])
    
    return answer
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글