코딩테스트/코드챌린지

[2025 프로그래머스 코드챌린지 2차 예선] 서버 증설 횟수 (Java)

haleylog 2025. 2. 19. 14:04

요구사항

서버 1대당 수용할 수 있는 사용자와 매 시간 사용자의 수, 서버 증설 유지 시간이 주어질 때
매 시간 게임을 이용하는 사용자에 따라서 서버를 증설해야 한다면 하루 동안 최소 몇 번 서버를 증설해야 하는지 구하기

 

 

입력 값

int[] players 하루동안 시간대 별 게임 사용자 수
int[i] 는 i ~ i+1 시각에 사용하는 사용자 수
int m 서버 1대 당 수용할 수 있는 사용자 수
int k 증설한 서버의 유지 시간

 

 

풀이

1. 시간대 별 증설 서버 수 저장을 위한 배열 생성

 

2. 시간대 별 사용자와 서버 최대 수용 인원 비교

   -> 사용자 수(players[i]) / 수용인원(m) 이 증설 서버 수(servers[i]) 보다 적은 경우 Pass

 

3. 서버 증설이 필요한 경우 증설 된 서버 유지시간 만큼 증설 서버 배열에 추가 저장

    -> 사용자 수(players[i]) / 수용인원(m) - 증설 서버 수(servers[i]) 만큼 추가 저장

    -> 증설 서버 수 합산

 

4. 증설 서버 수 return

 

728x90

 

Java 코드

class Solution {
    public int solution(int[] players, int m, int k) {
        int answer = 0;
        
        int[] servers = new int[players.length];
        
        for(int i=0; i<players.length; i++) {
            if(players[i] / m <= servers[i]) continue;
            
            for(int j=1; j<k && (i+j)<servers.length; j++) {
                servers[i+j] += players[i] / m - servers[i];
            }
            
            answer += players[i] / m - servers[i];
        }
        
        return answer;
    }
}

 

 

문제 출처

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

728x90
반응형