프로그래머스

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

programmers.co.kr

package 프로그래머스.자바.택배배달과수거하기;
class Solution {
    public long solution(int cap, int n, int[] deliveries, int[] pickups) {
        long answer = -1;

        // 1. 투 포인터 각각 최대점부터 시작
        int d, p;
        d = p = n-1;

        // 2. 최대 거리를 저장할 변수
        int dist = 0;

        long result = 0;
        // 3. d, p가 모두 -1이 되면 멈춤
        while(d >= 0 || p >= 0){
            dist = Integer.MIN_VALUE;
            int count = cap;
            while(count > 0 && d >= 0){
                if(deliveries[d] > 0) {
                    dist = Math.max(dist, d);
                    deliveries[d] -= 1;
                    count--;
                } else d -= 1;
            }

            count = cap;
            while(count > 0 && p >= 0){
                if(pickups[p] > 0) {
                    dist = Math.max(dist, p);
                    pickups[p] -= 1;
                    count--;
                } else p -= 1;
            }

            if(dist == Integer.MIN_VALUE) break;
            result += (dist+1)*2;
        }


        answer = result;
        return answer;
    }
}

 

43분

언뜻 보기에 그리디문제 같아서 그리디하게 생각해보다보니

투포인터로 접근하게 되었다.

'문제풀이 > 프로그래머스' 카테고리의 다른 글

괄호 변환  (0) 2024.04.08
양궁대회  (0) 2024.04.06
리코쳇 로봇  (1) 2024.04.05
푸드 파이트 대회 Java  (0) 2024.02.28
공원 산책 Java  (0) 2024.02.26

+ Recent posts