공부/C++

[C++] 프로그래머스 서버 증설 횟수

굴러다니다니 2025. 5. 20. 11:17

좀 더럽게 푼 거 같다

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int solution(vector<int> players, int m, int k) {
    int answer = 0;
    
    vector<int> remainServer;
    for(int i = 0; i < players.size(); i++){
        if(players[i]/m<1) { //지금 이용자수 0
            if(remainServer.size() > 0) remainServer.erase(remainServer.begin()); //남은 서버 있으면 하나 빼기
            continue;
        }
        if (remainServer.size() < 1){ //남은 서버 배열이 없으면
            answer += players[i]/m;
            for(int j = 0; j < k; j++){
                remainServer.push_back(players[i]/m);
            }
        }
        else { //남은 서버 배열 있을때
            if(players[i]/m > remainServer[0]){
                int currentCount = remainServer.size();
                int count= players[i]/m - remainServer[0];
                answer += count;
                for(int j = 0; j < currentCount; j++){
                    remainServer[j] += count;
                }
                for (int j = 0; j < k - currentCount; j++){
                    remainServer.push_back(count);
                }
            }
        }
        if (remainServer.size() > 0) remainServer.erase(remainServer.begin()); // 첫 번째 원소 제거
    }
    
    return answer;
}
728x90
반응형