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
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[Level 2 | Python] 지게차와 크레인 (2025 프로그래머스 코드챌린지) (0) | 2025.03.01 |
---|---|
[Level 2 | Python] 완전범죄 (완탐 + 더 효율적인 코드) (0) | 2025.02.26 |
[Level 3 | Python] 미로 탈출 명령어 (0) | 2025.02.24 |
[Level 2 | Python] 요격 시스템 (0) | 2025.02.24 |
[Level 2 | Python] 호텔 대실 (0) | 2025.02.24 |