택배 배달과 수거하기

Volc·2023년 4월 8일
0

Algorithm

목록 보기
2/4

문제 풀이

  • 이동 거리가 최소가 되려면 먼 집부터 배달과 수거를 완료하여 먼 집을 덜 가야 한다고 생각함.
  • 먼 곳부터 최대한 많은 배달을 하고 먼 곳부터 최대한 많이 수거하여 그리디로 풀면 된다.

코드

def solution(cap, n, deliveries, pickups):
    answer = 0
    while(len(deliveries) or len(pickups)):
        while(deliveries and deliveries[len(deliveries)-1]==0):
            deliveries.pop()
        while(pickups and pickups[len(pickups)-1]==0):
            pickups.pop()
        del_ = cap
        answer += max(len(deliveries), len(pickups))
        while(deliveries and del_):
            del_temp = deliveries[len(deliveries)-1]
            if del_temp <= del_:
                del_ -= del_temp
                deliveries.pop()
            else:
                deliveries[len(deliveries)-1] -= del_
                del_ = 0
        pickups_ = cap
        while(pickups and pickups_):
            pick_temp = pickups[len(pickups)-1]
            if(pick_temp > pickups_):
                pickups[len(pickups)-1] -= pickups_
                pickups_ = 0
            else:
                pickups_ -= pickups[len(pickups)-1]
                pickups.pop()
    return answer*2
profile
미래를 생각하는 개발자

0개의 댓글