본문 바로가기

코딩테스트/프로그래머스

서버 증설 횟수

728x90
반응형


📌 문제 설명

당신은 온라인 게임을 운영하고 있습니다. 같은 시간대에 게임을 이용하는 사람이 m명 늘어날 때마다 서버 1대가 추가로 필요합니다. 어느 시간대의 이용자가 m명 미만이라면, 서버 증설이 필요하지 않습니다. 어느 시간대의 이용자가 n x m명 이상 (n + 1) x m명 미만이라면 최소 n대의 증설된 서버가 운영 중이어야 합니다. 한 번 증설한 서버는 k시간 동안 운영하고 그 이후에는 반납합니다. 예를 들어, k = 5 일 때 10시에 증설한 서버는 10 ~ 15시에만 운영됩니다.

하루 동안 모든 게임 이용자가 게임을 하기 위해 서버를 최소 몇 번 증설해야 하는지 알고 싶습니다. 같은 시간대에 서버를 x대 증설했다면 해당 시간대의 증설 횟수는 x회입니다.

 

0시에서 23시까지의 시간대별 게임 이용자의 수를 나타내는 1차원 정수 배열 players, 서버 한 대로 감당할 수 있는 최대 이용자의 수를 나타내는 정수 m, 서버 한 대가 운영 가능한 시간을 나타내는 정수 k가 주어집니다. 이때, 모든 게임 이용자를 감당하기 위한 최소 서버 증설 횟수를 return 하도록 solution을 완성해 주세요.

 

📌 제한 사항

  • players의 길이 = 24
    • 0 ≤ players의 원소 ≤ 1,000
    • players[i]는 i시 ~ i+1시 사이의 게임 이용자의 수를 나타냅니다.
  • 1 ≤ m ≤ 1,000
  • 1 ≤ k ≤ 24

📌 입출력 예

players  m  k  result
[0, 2, 3, 3, 1, 2, 0, 0, 0, 0, 4, 2, 0, 6, 0, 4, 2, 13, 3, 5, 10, 0, 1, 5] 3 5 7
[0, 0, 0, 10, 0, 12, 0, 15, 0, 1, 0, 1, 0, 0, 0, 5, 0, 0, 11, 0, 8, 0, 0, 0] 5 1 11
[0, 0, 0, 0, 0, 2, 0, 0, 0, 1, 0, 5, 0, 2, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1] 1 1 12

 

🔗 문제 링크

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

 

프로그래머스

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

programmers.co.kr


반응형

💡 풀이 아이디어

  • 증설된 서버 수를 저장하는 vector 활용

📝 최종 풀이

  • 각 시간대에서 필요한 서버 수를 계산합니다.
  • 현재 운영 중인 서버와 비교하여 부족한 만큼 증설합니다.
  • 증설한 서버를 k시간 동안 유지합니다.

728x90

👩‍💻 코드

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

using namespace std;

int solution(vector<int> players, int m, int k) {
    int answer = 0;
    vector<int> server(24, 0);
    
    for(int i=0; i<=24; i++){
        int needServer = players[i] / m;
        
        if(server[i] < needServer){
            int addServer = needServer - server[i];
            
            for (int j=0; j<min(i+k, 24); j++){
                server[j] += addServer;
            }
            
            answer += addServer;
        }
    }
    
    return answer;
}
728x90
반응형

'코딩테스트 > 프로그래머스' 카테고리의 다른 글

완전범죄  (0) 2025.05.04
지게차와 크레인  (0) 2025.03.17
비밀 코드 해독  (0) 2025.03.14
택배 상자 꺼내기  (0) 2025.03.14
[PCCP 기출문제] 1번 / 동영상 재생기  (0) 2025.03.14