[Programmers]-프린터(스택/큐)

문제

“코딩테스트 고득점 Kit - 스택/큐” 문제이다.

코드

import java.util.Queue;
import java.util.LinkedList;
import java.util.ArrayList;
import java.util.Collections;

class Solution {
    public class Data{
        int priority;
        int index;
        public Data(int priority, int index){
            this.priority = priority;
            this.index = index;
        }
    }
    public int solution(int[] priorities, int location) {
        Queue<Data> queue = new LinkedList<>();
        ArrayList<Integer> list = new ArrayList<>();
        
        for(int i=0;i<priorities.length;i++){
            queue.offer(new Data(priorities[i], i));
            list.add(priorities[i]);
        }
        Collections.sort(list);
        
        int count = 1;
        while(!queue.isEmpty()){
            Data d = queue.poll();//1
            if(d.priority < list.get(list.size()-count)){//2
                queue.offer(d);
            }
            else{//3
                if(location == d.index) return count;
                count++;
            }
        }
        return count;
    }
}

코드 설명

정렬 때문에 시간이 길어진것 같다.

요약

  • offer : 데이터 추가

  • peek : 데이터 조회

  • poll : 데이터 조회,삭제