출처: https://bumcrush.tistory.com/182 [맑음때때로 겨울]
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/150369

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

package Programmers;

public class 택배배달과수거하기 {
    public static void main(String[] args){
        택배배달과수거하기 T = new 택배배달과수거하기();

        int cap = 4; //상차할수있는 택배 개수
        int n= 5; // 배달지점 개수
        int[] deliveries = {1, 0, 3, 1, 2};
        int[] pickups = {0, 3, 0, 4, 0};
        T.solution(cap, n, deliveries, pickups);
    }
    public long solution(int cap, int n, int[] deliveries, int[] pickups) {
        long answer = 0;
        int d = 0, p = 0;

        //맨뒤에서부터 탐색
        for (int i = n-1; i >= 0; i--) {
            d += deliveries[i]; //배달
            p += pickups[i]; //픽업

            //0보다 클경우는 배달을 와야되는 지점임 0보다 작을때까지 계속돌림
            while (d > 0 || p > 0){
                d -= cap;
                p -= cap;
                answer += (i +1) * 2;
            }
        }
        return answer;
    }
}

 

1. 풀이방법 

  - n개의 집이면 n번째 집부터 1번째 집까지 탐색.

  - 해당집에 몇번이나 와야되는디 d(배달), p(픽업)  변수로 확인 cap 만큼 계속 빼준다. 

  - 계속 돌면서 answer 에다가 (i+1) * 2 더해줌 (*2해주는 이유는 왕복이니까 )

 

※ 처음에는 갈때 올때 while 문 두개돌려서 포인터 두개놓고 계산하다가 

도저히 아닌거 같아서 답변봤더니 너무 허무하게 풀림 ......................................

반응형

+ Recent posts