Algorithm/Programmers

[Lv.2] 프로세스 : Java

say! 2025. 9. 26. 16:04
728x90

 

 

프로그래머스

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

programmers.co.kr

 

해당 순서(인덱스)가 몇 번째로 실행되는지 알아야 하니까 큐에 인덱스도 같이 넣기

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

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        ArrayDeque<int[]> q = new ArrayDeque<>();

        // 큐 채우기
        for(int i=0; i<priorities.length; i++){
            q.offer(new int[] {i, priorities[i]});
        }
        
        while(!q.isEmpty()){
            int[] current = q.poll();
            int currprio = current[1];
            
            // 방금 꺼낸 프로세스보다 우선순위 높은게 있으면 다시 큐에 넣기
            boolean flag = false;
            for(int[] i : q){
                if(currprio < i[1]){
                    q.offer(current);
                    flag = true;
                    break;
                }
            }
            
            // 우선순위 더 높은게 없는 경우 > 실행
            if(!flag){
                answer++;
                if(location == current[0]){
                    return answer;
                }
            }
        }
        
        
        // 1' 1 9 1 1 1
        // 1 9 1 1 1 1'
        //! 9 1 1 1 1' 1
        //! 1 1 1 1' 1
        //! 1 1 1' 1
        //! 1 1' 1
        //! 1' 1
        
        return answer;
    }
}

'Algorithm > Programmers' 카테고리의 다른 글

[Lv.2] 카펫 : Java  (0) 2025.09.26
[Lv.2] 게임 맵 최단거리 : Java  (0) 2025.09.26
[Lv.2] JadenCase 문자열 만들기 : Java  (0) 2025.09.26
[Lv.2] 괄호 회전하기 : Java  (0) 2025.09.26
[Lv.2] 문자열 압축 : Java  (0) 2025.09.26