본문 바로가기

Algorithm/PS

[1일 1알고] 서버 증설 횟수

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

 

프로그래머스

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

programmers.co.kr

 

Lv2라고 하는데 굉장히 간단한 문제입니다.

 

서버의 최소 증설 횟수를 알아야하는데 배열 범위안에서 간단한 사칙연산을 통해 계산해 구할 수 있습니다.


#include <string>
#include <vector>

using namespace std;

int solution(vector<int> players, int m, int k) {
    int time = players.size();
    vector<int> servercnt(time, 0);
    int answer = 0;
    for (int i = 0; i < time; ++i)
    {
        int required_server = players[i] / m;
        if (servercnt[i] < required_server)
        {
            int add = required_server - servercnt[i];
            answer += add;
            for (int j = i; j < i + k; ++j)
            {
                if (j >= time)
                    break;
                servercnt[j] += add;
            }
        }
    }

    return answer;
}

 

실수할만한 요소는 배열의 범위를 넘거나, 나누기를 잘못하는 것인데 

해당 문제는 그것도 안하도록 배려한 문제라고 봅니다.