코딩테스트/프로그래머스

[Level 2 | Python] 서버 증설 횟수 (2025 프로그래머스 코드챌린지)

jinsang-2 2025. 2. 27. 09:48

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

 

프로그래머스

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

programmers.co.kr

 

문제

서버를 게임 이용자의 수에 맞게 자동으로 scale-out 가능하게 구현하는 문제이다.

m=3이고 k=5 일 때의 시간대별 증설된 서버의 수와 증설 횟수 예시이다. (그냥 증설된 서버의 수 list로 만들면 끝나겠는 걸?)

       
시각 게임 이용자의 수 증설된 서버의 수 증설 횟수
0 ~ 1 0 0 0
1 ~ 2 2 0 0
2 ~ 3 3 1 1
3 ~ 4 3 1 0
4 ~ 5 1 1 0
5 ~ 6 2 1 0
6 ~ 7 0 1 0
7 ~ 8 0 0 0
8 ~ 9 0 0 0
9 ~ 10 0 0 0
10 ~ 11 4 1 1
11 ~ 12 2 1 0
12 ~ 13 0 1 0
13 ~ 14 6 2 1
14 ~ 15 0 2 0
15 ~ 16 4 1 0
16 ~ 17 2 1 0
17 ~ 18 13 4 3
18 ~ 19 3 3 0
19 ~ 20 5 3 0
20 ~ 21 10 3 0
21 ~ 22 0 3 0
22 ~ 23 1 0 0
23 ~ 24 5 1 1

풀이과정

위에 증설된 서버의 수를 그냥 리스트로 만들고 증설을 새로할 때마다 answer에 +1 해주면 되고 k만큼 반복문 돌아서 증설된 서버의 수 리스트를 갱신해주면 되겠다고 생각했다. 

게임 이용자 수가 서버를 증설해야 될 숫자가 되면 그냥 증설 해주면 되는 문제~ easy~

def solution(players, m, k):
    length=len(players)
    now_server=[0]*(length+k) # 증설된 서버의 수 list
    answer=0
    for i,users in enumerate(players):
        if users>=(now_server[i]+1)*m:
            add_server= users//m - now_server[i]
            for j in range(i,i+k):
                now_server[j]+=add_server
            answer+=add_server
    
    return answer