문제: 운송트럭

data_hamster·2023년 4월 13일
0


아이디어

-> trucks = 0

  • specs를 dict형으로 변환

  • names for 문으로 순회하면서, 무게를 더함.

  • 무게가 max_weight 보다 클 경우, 무게를 초기화 하고 다시 적재

  • 최종적으로 trucks 리턴

  • name으로 순회를 다 돌고나서, weight에 무게가 남아 있을 경우, trucks += 1 (마지막에 무게를 확인), 위의 코드로는 max_weight 초과 -> 출발 -> 무게 적재 끝.

  • 인데 무게 적재만 하고, 트럭을 출발 안시킴

내 답안

def solution(max_weight, specs, names):
    specs = {k:v for k,v in specs}
    trucks = 0
    weight = 0
    print(specs[names[0]])
    for name in names:
        # 이전에 뭐 하나라도 싣었고, 다음 물건을 싣었을 때 초과 되면, 트럭 출발
        if weight + int(specs[name]) > max_weight and weight > 0:
            trucks += 1
            weight = int(specs[name])
        # weight + int(sepcs[name]) > ma
        else:
            weight += int(specs[name])
    if weight > 0:
        trucks += 1
    return trucks

어려웠던 점

내 알고리즘은
이전에 적재된 무게 + 현재 호출된 상품 무게가 > 300일 경우 trucks += 1
그리고 weight = 현재 호출된 상품 무게 였다.
이러다 보니. 순회가 끝나고 나서, 마지막으로 호출된 상품도 트럭 수 에 포함 시켜야 하는데, 누락되었다.
간단하게, 순회를 돌고 마지막으로 적재된 무게가 0보다 크면, (하나 이상 적재되어 있을 경우) 트럭 수를 증가 시키는 것으로 해결하였다.

profile
반갑습니다 햄스터 좋아합니다

0개의 댓글