https://school.programmers.co.kr/learn/courses/30/lessons/150369?language=cpp
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
#include <string>
#include <vector>
using namespace std;
/*
3가지 조건
배달할 물건이나, 회수할 물건이 i번째 까지 존재한다면, 반드시 i번째 까지는 적어도 한 번은 가야함
한 번 출발하여, 물류창고로 돌아오면, cap만큼의 배달을 수행할 수 있고, cap만큼의 물건을 회수 해 올 수 있음.
한 곳에서 택배를 전부 배달하지 못했거나, 회수하지 못했다면, 물류창고로 돌아왔다가, 다시 같은 장소로 떠나야 함
*/
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 idx = n - 1; idx >= 0; --idx){
int cnt = 0;
d -= deliveries[idx];// idx+1 거리의 집의 택배 배달할 갯수 차감
p -= pickups[idx];// idx + 1 거리의 집의 택배 수거할 갯수 차감
while(d <0 || p<0){
d+= cap;
p+= cap;
cnt++;
}
answer += (idx + 1) * 2 * cnt;
}
return answer;
}
타인풀이
https://school.programmers.co.kr/questions/43364
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr