상세 컨텐츠

본문 제목

[프로그래머스] 389479. 서버 증설 횟수 | Python3, Level2, 단순 구현

Coding Test/문제풀이

by yooputer 2025. 4. 15. 16:51

본문

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

 

프로그래머스

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

programmers.co.kr


문제 요약

1. 기본적으로 서버1대가 있고, 사용자가 m명 늘어날때마다 서버 1대를 증설해야 한다. 증설한 서버는 k시간동안 유지된다. 

(m이 3이면 0~2명일때는 1대, 3 ~ 5명일때는 2대, 6 ~ 8명일때는 3대가 필요하다. )

2. 하루동안 시간별 사용자수와 m(최대 사용자수), k(서버 지속 시간)이 주어질 때 서버 증설 횟수를 구하라. 

 


해결 프로세스

1. 시간별 서버수를 배열로 관리한다. 

2. 만약 현재 사용자수가 감당가능한 사용자수를 넘으면 서버를 증설한다. 

 


정답 소스코드

def solution(시간별사용자수, 서버당최대사용자수, 서버지속시간):
    서버증설횟수 = 0
    시간별서버수 = [1] * 24

    for h in range(24):
        현재사용자수 = 시간별사용자수[h]
        현재서버수 = 시간별서버수[h]
        필요한서버수 = 현재사용자수 // 서버당최대사용자수 + 1
        증설해야하는서버수 = 필요한서버수 - 현재서버수

        if 증설해야하는서버수 > 0:

            for i in range(h, h + 서버지속시간):
                if i < 24:
                    시간별서버수[i] += 증설해야하는서버수

            서버증설횟수 += 증설해야하는서버수

    return 서버증설횟수

관련글 더보기