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);
        }
    }
}