[프로그래머스 Python]_ Lv2. 서버 증설 횟수

NANO·2026년 3월 16일

[Algorithm]

목록 보기
1/10
post-thumbnail

문제 정보


문제 요약

24시간 동안 시간대별 게임 이용자 수가 주어질 때,
서버 1대가 m명을 담당하고 k시간 동안 운영된다면
모든 이용자를 감당하기 위한 최소 서버 증설 횟수를 구하는 문제


풀이 접근

  1. 각 시간대마다 필요한 서버 수 = players[i] // m
  2. 이미 운영 중인 서버 수(servers[i])가 부족하면 그 차이만큼 증설
  3. 증설한 서버는 i ~ i+k 구간에 반영 (슬라이싱으로 일괄 업데이트)
  4. 예외 케이스 (m=1, k=1 / k=1) 는 별도 처리

핵심 아이디어

  • servers 배열로 현재 운영 중인 서버 수를 시간대별로 추적
  • 서버 증설 시 servers[i:i+k]를 한 번에 업데이트해서 슬라이딩 윈도우처럼 활용
  • 증설이 필요한 경우에만 카운트 → 불필요한 연산 스킵

코드

def solution(players, m, k):
    count = 0
    servers = [0] * 24
    temp_use = 0
    
    if (m == 1 and k == 1) :
        return (sum(players))
    
    elif (k == 1) :
        answer = [x // m for x in players]
        return (sum(answer))
    
    else :
        for i in range(len(players)) :
            member = players[i]
            server = servers[i]

            use = member // m

            if (use > server) :
                servers[i:i+k] = [x + (use - server) for x in servers[i:i+k]]
                count += (use - server)

            else :
                continue
            
        return count

배운 점 / 회고

  • 문제에서 3개의 분기점을 알려줘서 쉽게 풀었다.
  • use - server를 해야하는 경우가 있다. 하지 않으면 증설값이 그대로 누적된다.
profile
즐거운 토마토

0개의 댓글