프로그래머스 389479번 서버 증설 횟수 Kotlin

: ) YOUNG·2025년 4월 14일
2

알고리즘

목록 보기
460/465
post-thumbnail

프로그래머스 389479번 서버 증설 횟수 Kotlin

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

문제



생각하기


  • 우선순위 큐 문제이다.


동작





결과


코드


import java.util.*

class Solution {
    private val N = 24
    private data class Server(val endTime : Int ) : Comparable<Server> {
        override fun compareTo(o : Server) : Int {
            return endTime - o.endTime
        }
    } // End of Server class
    
    fun solution(players: IntArray, m: Int, k: Int): Int {
        var ans = 0
        
        val que = PriorityQueue<Server>()
        val startNum = players[0]
        val div = (startNum / m)
        var needServerCount = div
        
        for(i in 0 until N) {
            val nowPlayerCount = players[i]
            
            while(que.isNotEmpty() && que.peek().endTime <= i) {
                que.poll()
            }
            
            needServerCount = nowPlayerCount / m
            val nowServerCount = que.size
            val diff = needServerCount - nowServerCount
                        
            if(diff >= 1) {
                ans += diff
                for(j in 0 until diff) {
                    que.offer(Server(i + k))
                }
            }
        }
        
        
        return ans
    } // End of solution()
} // End of Solution class

0개의 댓글