코딩테스트/C++
[프로그래머스 Level 2] 서버 증설 횟수 (C++)
최-코드
2025. 2. 27. 20:43
https://school.programmers.co.kr/learn/courses/30/lessons/389479
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
생각 흐름
- 시간이 지나면 증설된 서버 개수를 빼줘야 하므로 배열을 하나 만들어 해당 시점이 되면 값을 빼주도록 하기로 결정
- players 크기를 넘어선 시점에 빼줘야 하는 것을 방지하려 했지만, players의 크기가 최대 24인 것을 보고 배열의 크기를 10000으로 설정하여 크기를 넘어선 시점에 대한 예외 처리 삭제하기로 결정
- plyers[i]/m의 값과 현재 서버의 개수를 비교해서 players[i]/m의 값이 크면 서버를 증설하기로 결정. 이로 인해 현재 서버의 개수를 저장
#include <vector>
using namespace std;
int whenDown[10000];
int solution(vector<int> players, int m, int k) {
int answer = 0;
int nowServer = 0;
for(int i = 0; i<players.size(); i++){
int necessaryServer = players[i]/m;
if(necessaryServer>nowServer){
answer+=(necessaryServer-nowServer);
whenDown[i+k-1]=whenDown[i+k-1]-(necessaryServer-nowServer);
nowServer=necessaryServer;
}
if(whenDown[i]<0){
nowServer+=whenDown[i];
}
}
return answer;
}