[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 : 데이터 조회,삭제