몸과 마음이 건전한 SW 개발자

프로그래머스 [Lv. 2] 서버 증설 횟수 {언어 : JavaScript} 본문

알고리즘

프로그래머스 [Lv. 2] 서버 증설 횟수 {언어 : JavaScript}

스위태니 2025. 3. 12. 22:41
728x90

문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/389479?language=javascript

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

정답 코드

function solution(players, m, k) {
    const lenP = players.length;
    let answer = 0;

    const servers = Array.from({length: lenP}, () => 0);
    players.forEach((e, idx) => {
        if (e >= m) {
            const sai = servers.at(idx);
            const mcedm = Math.floor(e/m);
            if (sai < mcedm) {
                const diff = mcedm - sai;
                answer += diff;
                for (let jdx = idx; jdx < Math.min(idx+k, lenP); jdx++) {
                    servers[jdx] += diff;
                }
            }
        }
    })    
    return answer;
}

풀이 방법

  1. 해당 시간대의 서버 개수(servers.at(idx))와 현재 이용자 수(e)를 비교하고 m명 보다 많은 경우를 걸러준다.
  2. 만약 서버 개수가 적다면 새로 증설하고 k 시간 만큼 servers에 차이(diff)만큼 추가한다.
  3. answer에는 diff를 한 번만 더해준다.
  4. 마지막으로 answer만 출력하면 끝! 

느낀점

  • 오랜만에 문제 푸니까 Array 설정하는 방법도 까먹었다.
  • 다시 많이 풀어 보는 것이 좋겠다.
728x90