https://school.programmers.co.kr/learn/courses/30/lessons/77486
코드
function solution(enroll, referral, seller, amount) {
const profits = {};
for (const name of enroll) {
profits[name] = 0;
}
const parent = {};
for (let i = 0; i < enroll.length; i++) {
parent[enroll[i]] = referral[i];
}
for (let i = 0; i < seller.length; i++) {
let sellerName = seller[i];
let profit = amount[i] * 100;
while (sellerName !== "-" && profit > 0) {
const distribute = Math.floor(profit * 0.1);
const keep = profit - distribute;
profits[sellerName] += keep;
if (distribute === 0) break;
sellerName = parent[sellerName];
profit = distribute;
}
}
return enroll.map((name) => profits[name]);
}
어떤 판매원에게 수익이 발생하면 추천인을 타고 올라가며 센터에 도달하거나 더이상 분배할 금액이 없을 때까지 수익을 분배하면 되는 문제였다.
사실 다 풀고 나면 어렵지 않은데, 조직원들의 이름이 string으로 되어 있고, 문제가 길어서 조금 헷갈렸던 문제였다.
'문제풀이 > 구현' 카테고리의 다른 글
[Python/파이썬] 백준 11916번 볼질 (0) | 2025.06.03 |
---|---|
[Javascript/자바스크립트] (프로그래머스) 삼각 달팽이 (1) | 2025.05.25 |
[Javascript/자바스크립트] (프로그래머스) 베스트앨범 (0) | 2025.05.08 |
[Python/파이썬] 백준 9555번 대회 장소 준비 (0) | 2025.04.22 |
[Python/파이썬] 백준 11387번 님 무기가 좀 나쁘시네여 (0) | 2025.04.15 |