코딩테스트/코드챌린지
[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
반응형