ProgramSoliving
프로그래머스 : 다단계 칫솔 판매 (JavaScript)
하이후에호
2021. 8. 3. 18:35
반응형
HashMap으로 판매자들을 number 로 변경, 그 후 배열로 부모 관계 데이터 표현
DFS 상위에 판매결과값 전달.
const hash = new Map();
var edge;
var answer;
const DFS = (num, money)=> {
const next = edge[num];
const nextMoney = Math.floor(money * 0.1);
const currentMoeny = money - nextMoney;
answer[num] += currentMoeny;
if(next !== null && nextMoney!== 0)
DFS(next, nextMoney);
}
function solution(enroll, referral, seller, amount) {
const len = enroll.length;
for(let i=0;i<len;i++) {
hash.set(enroll[i], i);
}
edge = Array(len);
for(let i=0;i<len;i++) {
const ref = referral[i];
if(ref === '-'){
edge[i] = null;
continue;
}
const num = hash.get(ref);
edge[i] = num;
}
answer = Array(len).fill(0);
const sellerCnt = seller.length;
for(let i=0; i< sellerCnt; i++) {
const sellerNum = hash.get(seller[i]);
const money = amount[i] * 100;
// 가격 계산 DFS
DFS(sellerNum, money);
}
return answer;
}
반응형