본문 바로가기
프로그래머스/Lv.2

2025 프로그래머스 코드챌린지 2차 예선 > 서버 증설 횟수 - Python, 구현

by 아찌방 2025. 2. 15.

 

 

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

 

프로그래머스

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

programmers.co.kr

 

 

코드 & 풀이

 

def solution(players, m, k):
    answer = 0
    size = len(players)
    servers = [0] * size
    
    def server_expansion(need_server, start):
        for idx in range(k):
            if start + idx < size:
                servers[start + idx] += need_server
    
    for idx, player in enumerate(players):
        if player >= m:
            need_server = (player // m) - servers[idx]
            if need_server > 0:
                server_expansion(need_server, idx)
                answer += need_server
    
    return answer

 

그냥 서버 확장이 필요하면

 

필요한 수만큼 더하면서 기록해주고

 

그 필요한 수를 더해가면 답이 나옴

 

def solution(players, m, k):
    answer = 0
    servers = [0] * (len(players) + k)
    now_max = m
    for i, p in enumerate(players):
        now_max -= servers[i] * m # 현재 시점에서 소멸되는 서버 반영
        if now_max < p:
            add_servers = (p - now_max + m - 1) // m
            answer += add_servers
            now_max += add_servers * m
            servers[i + k] += add_servers # k 이후에 서버가 소멸되도록 설정

    return answer

 

현재 시점에서 소멸되는 서버를 계산하면서

 

서버 확장이 필요한지 확인

 

이후 k 시간 이후 서버가 소멸되도록 기록 후 진행

 

 

다음에 또 봐요

 

728x90