๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ“ ์•Œ๊ณ ๋ฆฌ์ฆ˜/Programmers

[Javascript/PGS] Lv.3 : ๋‹ค๋‹จ๊ณ„ ์นซ์†” ํŒ๋งค

by xxilliant 2025. 5. 8.
728x90
๋ฐ˜์‘ํ˜•

 

https://school.programmers.co.kr/learn/courses/30/lessons/77486

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก, ์ฑ„์šฉ๊นŒ์ง€ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr


ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ๋ ˆ๋ฒจ3

ํ•ด์‹œ๋งต ๊ตฌํ˜„ ๋ฌธ์ œ.

๋ณธ์ธ์˜ ์ด๋“์€ 90%์ด๊ณ , ๋ถ€๋ชจ์—๊ฒŒ 10%๋ฅผ ๋„˜๊ฒจ์ฃผ๋ฉด ๋˜๋Š”๋ฐ

์ด ๋•Œ ๋ฌด์ž‘์ • 0.9์™€ 0.1์„ ๊ณฑํ•˜๋ฉด ์•ˆ๋˜๊ณ , 10%๋ฅผ ๊ตฌํ•œ ๋’ค ๊ทธ ์ฐจ๋ฅผ ์ด์šฉํ•ด์•ผ ํ•œ๋‹ค.!! (์ž์‹ ๋ชซ = ๋ˆ - ๋ˆ*10%)

๋ฐ˜์˜ฌ๋ฆผ/๋‚ด๋ฆผ์ด ์ผ์–ด๋‚˜๋ฉด์„œ ์ˆ˜๊ฐ€ ๋ฐ”๋€Œ๊ธฐ ๋•Œ๋ฌธ์—..์ฃผ์˜ํ•˜๊ธฐ ใ…Žใ…Ž

 

์ฒ˜์Œ์— ์ œ์ถœํ–ˆ์„ ๋•Œ, ํ…Œ์ผ€ 11๋ฒˆ ~ 13๋ฒˆ์ด ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๊ฑธ๋ ค์„œ ๋ญ์ง€? ์‹ถ์—ˆ๋Š”๋ฐ

while๋ฌธ์—์„œ ์ข…๋ฃŒ ์กฐ๊ฑด์„ ํ•˜๋‚˜ ๋” ์ถ”๊ฐ€ํ•ด์ฃผ๋‹ˆ ํ†ต๊ณผ๋˜์—ˆ๋‹ค!

 

์ฒ˜์Œ์—๋Š” ์ตœ์ƒ์œ„ ๋ถ€๋ชจ์— ๋‹ค๋‹ค๋ž์„ ๋•Œ๋งŒ ์ข…๋ฃŒํ•ด์ฃผ์—ˆ๋Š”๋ฐ,

ํ˜„์žฌ ๊ธˆ์•ก์ด 0์ด ๋˜์—ˆ์„ ๋•Œ ์กฐ๊ฑด์„ ์ถ”๊ฐ€ํ•˜๋‹ˆ ๋” ํšจ์œจ์ ์ธ ์ฝ”๋“œ๊ฐ€ ๋˜์—ˆ๋‹ค

 

 

๋‚˜์˜ ํ’€์ด

// input -> ๋ณธ์ธ์€ 90%, ์ƒ์œ„์— 10%๋ฅผ ๋„˜๊น€. 10์› ๋ฏธ๋งŒ์ด๋ฉด ๋ณธ์ธ์ด ๊ฐ€์ง
// ์นซ์†” ๊ฐœ๋‹น 100์›
function solution(enroll, referral, seller, amount) {
    var answer = [];
    let money = new Map();
    let parents = new Map();
    
    enroll.map(e=>{ money.set(e,0); }) // ์‚ฌ๋žŒ & ๊ธˆ์•ก ์ €์žฅ
    for(let i=0; i<enroll.length; ++i) parents.set(enroll[i], referral[i]); // ์‚ฌ๋žŒ & ๋ถ€๋ชจ ์ €์žฅ
    
    for(let i=0; i<seller.length; ++i){
        let person = seller[i];
        let howmuch = amount[i]*100;
        while(person!="-" && howmuch>0){
            let tenPercent = Math.floor(howmuch/10);
            money.set( person, money.get(person) + howmuch-tenPercent );
            // console.log(person, money.get(person));
            person = parents.get(person);
            howmuch = tenPercent;
        }
    }
    money.forEach(m=>{
        answer.push(m);
    })
    return answer;
}

728x90
๋ฐ˜์‘ํ˜•