코테풀이

[프로그래머스 Lv.2 - Java] 프린터

diddl 2022. 2. 15. 17:29
반응형

문제 설명

https://programmers.co.kr/learn/courses/30/lessons/42587

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

문제 풀이

package programmers.level2;

import java.util.*;

public class PG_LV2_프린터 {
    public int solution(int[] priorities, int location) {
        int answer = 1;
        List<int[]> printer = new ArrayList<>();
        for (int i = 0; i < priorities.length; i++) {
            int[] priWithIdx = {priorities[i], i};
            printer.add(priWithIdx);
        }

        while (!printer.isEmpty()) {
            boolean isHigh = false;
            for (int i = 1; i < printer.size(); i++) {
                // 우선순위가 더 높은 것이 존재하는지 체크
                if (printer.get(0)[0] < printer.get(i)[0]) {
                    isHigh = true;
                    break;
                }
            }

            if (isHigh) {
                // 뒤에 우선순위가 높은 게 있으면 젤 뒤로 보내주기
                int[] back = printer.get(0);
                printer.remove(0);
                printer.add(back);
            } else {
                // 내가 뽑고자 하는 거라면? return
                if (printer.get(0)[1] == location) {
                    return answer;
                }
                // 그렇지 않다면 프린트 한 후, 프린트 완료 개수 +1 해주기
                printer.remove(0);
                answer++;
            }
        }

        return answer;
    }

    public static void main(String[] args) {
        PG_LV2_프린터 method = new PG_LV2_프린터();
        int[] priorities = {1, 1, 9, 1, 1, 1};
        System.out.println(method.solution(priorities, 0));
    }
}

 

반응형