Algorithm/Stack, Queue
[프로그래머스] 프린터 문제 [JAVA]
SalTae
2019. 11. 19. 21:48
import java.util.*;
import java.util.stream.Collectors;
class Solution {
public static int solution(int[] priorities, int location) {
int answer = 0;
Queue<int[]>queue=new LinkedList<>();
Queue<Integer>numset=new LinkedList<>();
List<Integer>tmplist = Arrays.stream(priorities).boxed().collect(Collectors.toList());
Collections.sort(tmplist, new AsendingInteger());
for(int i=0;i<tmplist.size();i++){
((LinkedList<Integer>) numset).add(tmplist.get(i));
}
for (int i=0;i<priorities.length;i++){
if (i==location)
((LinkedList<int[]>) queue).add(new int[]{priorities[i],1});
else
((LinkedList<int[]>) queue).add(new int[]{priorities[i],0});
}
int bigNum=numset.poll();
int count=0;
while(!queue.isEmpty()){
int[] compare = queue.poll();
if(compare[0]==bigNum){
count+=1;
if(compare[1]==1){
answer=count;
break;
}
if(!numset.isEmpty())
bigNum=numset.poll();
}
else{
((LinkedList<int[]>) queue).add(compare);
}
}
return answer;
}
private static class AsendingInteger implements Comparator<Integer>{
@Override
public int compare(Integer o1, Integer o2) {
return o2.compareTo(o1);
}
}
}