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

2025. 5. 24. 18:43·알고리즘
728x90
반응형

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

 

프로그래머스

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

programmers.co.kr

 

 

 

문제유형

  • 구현

문제 난이도

  • Lev2

문제분석

- 온라인 게임을 운영중인데, 시간마다 게임 이용자수, 서버 한 대당 가용 가능한 인원, 서버 한 대당 운영 시간이 주어진다.
- 기본적으로 서버는 한 대가 실행 중이고, 이용자 수가 많아져 서버가 더 필요한 경우, 서버를 증설하고, 증설한 횟수를 counting해서 결과값을 출력하는 문제이다.
- 문제에서 특별히 어려운 점은 없고, 주어진 문제 내용대로 구현을 진행하면 된다.

 

 

우선, 난 서버의 운영 가능시간을 확인하기 위해 List 배열을 활용해서 TTL을 설정해주었고, 우리는 0시부터 23시까지 Players들의 이용인원을 순회하므로 해당 시간대에 TTL이 일치한다면 List 배열에서 제거해주는 방식을 통해 현재 가용 가능한 서버의 수를 설정해주었다.

 while (!ttl.isEmpty() && ttl.get(0) == i) {
                // 서버 운영 가능시간 확인
                ttl.remove(0);
                server--;
            }

 

전체 코드

import java.util.*;
import java.io.*;

/**
* m: 서버 한대당 가용 가능한 인원
* k: 서버 한대당 유지 가능한 시간
*/

class Solution {
    public int solution(int[] players, int m, int k) {
        int result = 0;
        int server = 0; // 기본적으로 한대만 돌아가고 있음
        List<Integer> ttl = new ArrayList<>();
        
        for(int i = 0; i < players.length; i++) {
            
            while (!ttl.isEmpty() && ttl.get(0) == i) {
                // 서버 운영 가능시간 확인
                ttl.remove(0);
                server--;
            }
            
            if (players[i] >= (server + 1) * m) {
                // 서버가 더 필요한 경우
                int cnt = players[i] / m - server;
                // 증설 횟수
                result += cnt;
                
                for(int j = 0; j < cnt; j++) {
                    server++;
                    ttl.add(i + k);
                }
            }            
        }
        
        return result;
    }
}
728x90
반응형
저작자표시 비영리 변경금지 (새창열림)

'알고리즘' 카테고리의 다른 글

역행렬 계산  (0) 2025.05.28
[고득점 Kit - 그래프] 가장 먼 노드  (0) 2025.05.24
[PCCP 기출 3번] 충돌위험 찾기  (0) 2025.05.22
[PCCP 기출 2번] 퍼즐 게임 챌린지  (0) 2025.05.20
[PCCP 기출 4번] 수식 복원하기  (0) 2025.05.20
'알고리즘' 카테고리의 다른 글
  • 역행렬 계산
  • [고득점 Kit - 그래프] 가장 먼 노드
  • [PCCP 기출 3번] 충돌위험 찾기
  • [PCCP 기출 2번] 퍼즐 게임 챌린지
moongi
moongi
프로그래밍 관련 공부를 정리하는 블로그
  • moongi
    By_Me
    moongi
  • 전체
    오늘
    어제
    • 공부 (96) N
      • 알고리즘 (76) N
        • 구현 (12)
        • 이분 탐색 (1)
        • 누적합 (2)
        • 다이나믹 프로그래밍 (5)
        • 위상 정렬 (2)
        • SCC (1)
        • BFS & DFS (3) N
        • 그래프 (2)
        • LCA (2)
        • 세그먼트 트리 (2)
        • 플로이드 워셜 (1)
        • 문자열 (1)
        • 수학 (1)
        • Heap (1)
        • SQL (9)
        • 개념 정리 (5)
        • 예외처리 (1)
      • spring boot (6)
        • jpa (0)
        • querydsl (0)
        • MVC pattern (0)
        • setting (2)
      • 취준 (3)
      • CS (11)
        • 대규모 시스템 설계 (2)
        • 디자인패턴 (2)
        • 데이터베이스 (4)
        • 네트워크 (3)
        • 운영체제 (0)
  • 인기 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
moongi
[프로그래머스] 서버 증설 횟수
상단으로

티스토리툴바