프로세스


프로그래머스 [프로세스]

문제보기
Alt text

소스코드

import java.util.*;

class Solution {
    public static int solution(int[] priorities, int location) {
        Queue<Process> queue = new ArrayDeque<>();
        List<Integer> priorityList = new LinkedList<>();

        for (int i = 0; i < priorities.length; i++) {
            queue.add(new Process(priorities[i], i));
            priorityList.add(priorities[i]);
        }

        Collections.sort(priorityList);

        int order = 0;

        while (!queue.isEmpty()) {
            Process process = queue.poll();
            int priorityIdx = priorityList.size() - 1;

            if (process.priority < priorityList.get(priorityIdx)) {
                queue.add(process);
            } else {
                order++;
                priorityList.remove(priorityIdx);

                if (process.location == location) {
                    return order;
                }
            }
        }

        return order;
    }
}

class Process {
    int priority;
    int location;

    public Process(int priority, int location) {
        this.priority = priority;
        this.location = location;
    }
}