프린터

Updated:

현재 있는 위치의 인덱스가 계속 바뀔수 있기 때문에, 우선순위와 인덱스를 동시에 가질수있는 Class를 만들어 문제를 풀었다. Class를 Deque의 타입 파라미터로 지정하고, 문제의 사이즈가 크지 않기 때문에,시뮬레이션을 구현을 했다.

  1. 현재 위치의 우선순위와 그 뒤의 우선순위들을 전부 체크를 해주고
  2. 만약 우선순위가 더큰것이 존재하면 맨뒤에 push를 하고, 그렇지 않다면 맨앞에서 하나씩 빼준다
  3. 1과 2를 정답이 있는 인덱스를 만날때까지 계속 해준다

By Java

import java.util.*;
class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0,idx=0;
        Deque<P> q = new ArrayDeque<>();
        for(int value : priorities){
            q.add(new P(value,idx++));
        }
        while(!q.isEmpty()) {
            Deque<P> temp = new ArrayDeque<>(q);
            int curvalue = q.peek().value,curorigin = q.peek().origin;
            boolean check = false;
            while(!temp.isEmpty()) {
                int nextvalue = temp.peek().value;
                if(curvalue<nextvalue) {
                    check = true;
                    break;
                }
                temp.poll();
                
            }
            if(check) {
                q.add(new P(curvalue,curorigin));
                q.pollFirst();
            }
            else {
                answer++;
                if(curorigin == location) {
                    break;
                }
                q.pollFirst();
            }
        }
        return answer;
    }
}
class P {
    int value;
    int origin;
    P(int value,int origin) {
        this.value = value;
        this.origin = origin;
    }
}

Leave a comment