[프로그래머스] 프로세스(Kotlin)

0

프로그래머스

목록 보기
125/128
post-thumbnail

[프로그래머스] 프로세스(Kotlin)

풀이

import java.util.*

class Solution {
    fun solution(priorities: IntArray, location: Int): Int {
        var answer = 0 //실행되는 순서
        
        //priorityCnt[우선순위] = 해당 우선순위를 갖는 작업 수
        var priorityCnt = Array<Int>(10){it -> 0}
        for(priority in priorities){
            priorityCnt[priority] += 1
        }
        
        //실행 완료된 프로세스의 인덱스
        val completed = mutableSetOf<Int>()
        
        while(completed.size != priorities.size){
            for(i in 0 until priorities.size){
                //이미 실행된 프로세스의 인덱스라면 무시하기
                if(completed.contains(i)) continue
                
                //현재 프로세스보다 우선순위가 높은 작업이 있는지 확인
                val curPriority = priorities[i]
                var canRun = true
                for(j in curPriority+1 .. 9){
                    if(priorityCnt[j] > 0){
                        canRun = false
                        break
                    }
                }
                
                //프로세스 실행하기
                if(canRun){
                    completed.add(i)
                    priorityCnt[curPriority] -= 1
                    answer++
                    //println("location: $i, answer: $answer")
                    
                    if(i == location) return answer
                }
            }
        }
        return answer
    }
}
profile
Be able to be vulnerable, in search of truth

0개의 댓글