반응형
문제 주소
https://school.programmers.co.kr/learn/courses/30/lessons/150369
풀이
https://school.programmers.co.kr/questions/43364
못 풀어서 위의 게시물을 참고하였다.
d와 p가 0이 될 때까지 while문을 반복하는 것이 핵심이다.
일단 d와 p에서 이렇게 뺀다.
d -= deliveries[i];
p -= pickups[i];
물류창고에 들르면 d와 p에 cap 만큼의 여유가 생긴다.
그렇기 때문에 d와 p에 cap 만큼 더한 후에 count를 증가시켜 물류창고에 들른 횟수를 기록해준다.
while (d < 0 || p < 0){
d += cap;
p += cap;
count++;
}
while문을 빠져나오면 answer에 i에서 물류창고 까지의 거리 * count 만큼을 더해준다.
그리고 count를 0으로 초기화시켜준다.
answer += (i + 1) * 2 * count;
count = 0;
코드
#include <string>
#include <vector>
#include <iostream>
using namespace std;
long long solution(int cap, int n, vector<int> deliveries, vector<int> pickups) {
long long answer = 0;
int d = 0;
int p = 0;
int count = 0;
for (int i = n-1; i >= 0; i--){
d -= deliveries[i];
p -= pickups[i];
while (d < 0 || p < 0){
d += cap;
p += cap;
count++;
}
answer += (i + 1) * 2 * count;
count = 0;
}
return answer;
}
반응형
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
[프로그래머스] 도넛과 막대 그래프 (0) | 2024.10.14 |
---|---|
[프로그래머스/그래프] 순위 (0) | 2024.10.10 |
[프로그래머스/그래프] 가장 먼 노드 (2) | 2024.10.09 |
[프로그래머스/크루스칼 알고리즘] 섬 연결하기 (0) | 2024.09.19 |
[프로그래머스/탐욕법] 조이스틱 (0) | 2024.09.13 |