프로그래머스 자전거 공장 문제 Algorithm
프로그래머스 자전거 공장 문제는 스택을 이용해서 풀어낼 수 있다. 기간별로 다른 누진세가 적용되기 때문에 최대한 저렴한 가격으로 자전거를 생산하기 위해서는 최대한 앞쪽에 물량을 몰아서 생산기간 동안 최대한 적은 숫자의 자전거를 매월 생산하도록 하는 것이 관건이다. 총 3단계로 나누어 알고리즘을 설계할 수 있다.
1. 얼마까지 자전거를 생산해야 한다라는 개념을 향후 몇개월 동안 얼마만큼의 자전거를 생산해야 되는지 order 배열을 재배치한다.
2. 새롭게 정의된 주문서에서 월별 생산량을 비교해서 뒷쪽에 물량이 몰려있는 경우 앞으로 추가하면서 물량을 조절할 수 있다.
3. 생산해야 하는 물량과 기간을 고려해서 최종 생산비를 뽑아낸다.
프로그래머스 자전거 공장 문제 Javascript 풀이
function solution(cost, order){
// Part 1
order.sort();
const _order = [order[0]]
for(let i = 1; i<order.length; i++){
const [m,n] = order[i]; // m : 시간 | n : 주문량
const [prevM, prevN] = order[i-1];
_order.push([m - prevM, n])
}
// part2
const stack = [];
for(let [m, n] of _order){
while(stack.length > 0){
const [_m, _n] = stack[stack.length - 1]
if(_m / _n < m / n){
break;
}
stack.pop();
m += _m;
n += _n;
}
stack.push([m,n]);
}
// Part 3
let answer = 0;
for(const [m, n] of stack){
let pPrev = 0;
for(const [time, price] of cost){
if(m * time >= n){
break;
}
answer += (n - m*time) * (price - pPrev);
pPrev = price;
}
}
return answer;
}
🚀️ 도움이 되셨다면 구독과 좋아요 부탁드립니다 👍️
댓글