[프로그래머스] Level 2 서버 증설 횟수 - 구현 (Javascript, Python3)

Jun·2025년 3월 12일

알고리즘

목록 보기
13/19

문제 링크

바로가기

문제 풀이

JS

function solution(players, m, k) {
    let answer = 0;
    let server = [];
    
    for(const player of players){
        server.forEach((val, idx) => server[idx]--);
        server = server.filter(val => val > 0);
        
        const available_players = server.length * m + m - 1;
        if(player > available_players) {
            let temp = available_players;
            while(temp < player){
                server.push(k);
                temp += m;
                answer++;
            }
        }
    }
    return answer;
}

PY

def solution(players, m, k):
    answer = 0
    server = []
    
    for player in players:
        server = [val - 1 for val in server]
        server = [val for val in server if val > 0]

        available_players = len(server) * m + m - 1
        if player > available_players:
            temp = available_players
            while temp < player:
                temp += m
                server.append(k)
                answer += 1
    return answer

풀이

Level2의 문제 치고는 쉬운 편이다.

시간을 돌면서 플레이어와 수용 가능한 플레이어의 수를 비교한 다음,
서버를 추가해야할 경우라면 while 문을 통해 서버를 추가해주고 카운팅을 한다.

이후 for문을 돌면서 서버의 시간을 1씩 줄여주고 0이 되면 배열에서 없애준다.

새롭게 배운 점

  1. 파이썬에서 리스트 컴프리헨션에 익숙해져야할 필요가 있다.
	server = [val - 1 for val in server]
	server = [val for val in server if val > 0]

위 방법을 통해서 서버에 새로운 배열을 만들어 줄 수 있다.

profile
2D | 3D 프론트엔드 개발자

0개의 댓글