https://school.programmers.co.kr/learn/courses/30/lessons/150369#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
총합 거리를 누적할 때 int 범위를 초과하는 점 주의하셔야합니다.
class Solution {
public long solution(int cap, int n, int[] deliveries, int[] pickups) {
int idx = n - 1;
int deliveryIdx = idx;
int pickupIdx = idx;
long totalDistance = 0;
while (idx >= 0) {
int delivery = deliveries[idx];
int pickup = pickups[idx];
if (delivery == 0 && pickup == 0) {
idx--;
continue;
}
totalDistance += (idx + 1) * 2;
deliveryIdx = move(deliveries, deliveryIdx, cap);
pickupIdx = move(pickups, pickupIdx, cap);
idx = Math.max(deliveryIdx, pickupIdx);
}
return totalDistance;
}
private int move(int[] houses, int idx, int cap) {
if (idx < 0) {
return -1;
}
while (idx >= 0 && cap > 0) {
int amount = houses[idx];
if (amount <= cap) {
cap -= amount;
houses[idx--] = 0;
continue;
}
houses[idx] -= cap;
break;
}
return idx;
}
}
'문제 풀이 > 프로그래머스' 카테고리의 다른 글
Lv.3 연속 펄스 부분 수열의 합 (0) | 2024.06.11 |
---|---|
월간 코드 챌린지 시즌3 / 빛의 경로 사이클 (0) | 2024.06.08 |
LV.2 2019 KAKAO BLIND RECRUITMENT / 후보키 (2) | 2024.03.29 |
Lv.2 우박수열 정적분 (0) | 2024.03.23 |
Lv.2 2021 Dev-Matching: 웹 백엔드 개발자(상반기) / 행렬 테두리 회전하기 (0) | 2024.03.23 |