๐Ÿ”’Algorithm

ํ”„๋กœ๊ทธ๋ž˜๋จธ[JS] > ์„œ๋ฒ„ ์ฆ์„ค ํšŸ์ˆ˜

devWarrior 2025. 2. 16. 00:32

๋ฌธ์ œ

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

 

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

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

programmers.co.kr

ํ’€์ด

์‹œ๊ฐ„๋Œ€๋ณ„๋กœ ํ˜„์žฌ ์„œ๋ฒ„๊ฐฏ์ˆ˜๋ฅผ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋Š” servers Array๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ์‹œ๊ฐ„๋Œ€๋ณ„ ์œ ์ €์ˆ˜๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉด์„œ ์ฆ์„คํ•ด์•ผ๋˜๋Š” ์„œ๋ฒ„๊ฐ€ ํ•„์š” ์‹œ ์ด๋ฅผ servers์— ์ถ”๊ฐ€ํ•˜๋ฉด์„œ ์ฆ์„คํšŸ์ˆ˜๋ฅผ ์นด์šดํŠธ ํ•˜์—ฌ ๋‹ต์„ ๊ตฌํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค. 

function solution(players, m, k) {
    let servers = Array(24).fill(0);
    let answer = 0;

    players.forEach((playerCnt, sTime) => {
        if (parseInt(playerCnt / m) > servers[sTime]) {
            let needServerCnt = parseInt(playerCnt / m) - servers[sTime];

            for (let i = 0; i < k; ++i) {
                if (sTime + i <= 23) {
                    servers[sTime + i] = servers[sTime + i] + needServerCnt;
                }
            }
            answer += needServerCnt;
        }
    });

    return answer;
}