알고리즘 문제/프로그래머스

택배 배달과 수거하기 [Lv.2]

우대비 2024. 6. 1. 09:38
반응형
 

프로그래머스

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

programmers.co.kr

 

일렬로 나열된 N개의 집에 택배를 배달, 수거할 때 최소 비용을 구하는 문제입니다.

택배 트럭은 한번에 cap개만 실을 수 있습니다.

 

풀이 방법

i번째 집에 한번 방문하면 무조건 i * 2의 비용이 발생합니다.

이때 트럭 공간이 모자라 수거, 배달을 전부 못했다면 i번째 집에 다시 방문할 것이고

트럭 공간이 여유가 있다면 다음 집(i - 1)에도 방문하여 수거, 배달을 할 수 있을 것 입니다.

 

즉 문제 풀이법의 핵심은 재방문 여부와 여유 공간의 유무 확인에 있습니다.

 

정답 코드

long long solution(int cap, int n, vector<int> deliveries, vector<int> pickups) {
    long long answer = 0;
    
    int d = 0;
    int p = 0;
    
    for (int i = n - 1; i >= 0; i--)
    {
        d -= deliveries[i];
        p -= pickups[i];
        int cnt = 0;
        
        while (d < 0 || p < 0){
            d += cap;
            p += cap;
            cnt++;
        }
        answer += (i + 1) * 2 * cnt;
    }
    return answer;
}
반응형
LIST

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

표현 가능한 이진트리 [Lv.3]  (0) 2024.06.03
미로 탈출 명령어 [Lv.3]  (0) 2024.06.02
이모티콘 할인행사 [Lv.2]  (0) 2024.05.30
주사위 고르기 [Lv.3]  (0) 2024.05.27
산 모양 타일링 [Lv.3]  (0) 2024.05.23