택배 배달과 수거하기

LJM·2023년 8월 4일
0

programmers

목록 보기
43/92

참고해서 해석하여서 풀었다...

class Solution {
    public long solution(int cap, int n, int[] deliveries, int[] pickups) {
        int deliver = 0;//배달해야 할 상품의 양
        int pickup = 0;//수거해야 할 상품의 양
        long answer = 0;

        for (int i = n-1; i >= 0; i--)//역순으로 집을 방문하면서 배달과 수거를 진행
        {
            if(deliveries[i] != 0 || pickups[i] != 0){
                int cnt = 0;
                while (deliver < deliveries[i] || pickup < pickups[i]){
                    cnt++;//특정 집에 대한 방문 횟수
                    deliver += cap;//배달해야 할 상품이 충분하지 않으면 물류창고에서 새로운 상품을 cap만큼 더 가져옴
                    pickup += cap;//수거해야 할 상품이 충분하지 않으면 물류창고에서 새로운 상품을 cap만큼 더 가져옴
                }
                deliver -= deliveries[i];
                pickup -= pickups[i];
                answer += (i+1) * cnt * 2;//물류창고에서 집까지 거리 * 방문횟수 * 왕복
            }

        }
        return answer;
    }
}
profile
게임개발자 백엔드개발자

0개의 댓글