코딩테스트/Java

[JAVA] 스택/큐 "프린터"

SK_MOUSE 2020. 9. 9. 01:05
반응형

필자가 작성한 코드는 통과하였지만, 실행시간이 좀 오래걸리는 단점이 있다.

import java.util.*;

class Solution {
    class Printing{
        int pri, loc;

        Printing(int priority, int locate){
            pri = priority;
            loc = locate;
        }
    }
    public int solution(int[] priorities, int location) {
        int answer = 0;
        Integer[] Priorities = new Integer[priorities.length];

        Queue<Printing> q = new LinkedList<>();

        for(int i =0; i<priorities.length; i++){
            Printing p = new Printing(priorities[i], i);
            q.add(p);

            Priorities[i] = priorities[i];
        }

        //우선순위 큰것부터 배열
        Arrays.sort(Priorities, Collections.reverseOrder());
        ArrayList<Integer> priority = new ArrayList<>(Arrays.asList(Priorities));


        while(true){
            if(q.peek().pri >= priority.get(0)){//최고순위인경우
                priority.remove(0);//해당 우선순위 제거
                ++answer;
                if(q.poll().loc == location){
                    break;//인쇄완료
                }
            }
            else{//최고순위가 아닌경우
                q.add(q.poll());//뺀걸 다시 넣어 맨뒤로
            }

        }
        return answer;
    }
}

기본적으로 객체를 이용하여 통째로 Queue에 넣어서 탐색하는 방식으로 설계했다.

 

 

다른 사람의 코드리뷰

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        int l = location;

        Queue<Integer> que = new LinkedList<Integer>();
        for(int i : priorities){
            que.add(i);
        }

        Arrays.sort(priorities);
        int size = priorities.length-1;



        while(!que.isEmpty()){
            Integer i = que.poll();
            if(i == priorities[size - answer]){
                answer++;
                l--;
                if(l <0)
                    break;
            }else{
                que.add(i);
                l--;
                if(l<0)
                    l=que.size()-1;
            }
        }

        return answer;
    }
}

priorities 위의 인덱스부터 내려오면서 탐색.

 

 

 

반응형

'코딩테스트 > Java' 카테고리의 다른 글

[JAVA] 힙 "디스크 컨트롤러"  (0) 2020.09.15
[JAVA] 힙 "더 맵게"  (0) 2020.09.10
[JAVA] 스택/큐 "다리를 지나는 트럭"  (0) 2020.09.07
[JAVA] 스택/큐 "기능개발"  (1) 2020.09.05
[JAVA] 스택/큐 "주식가격"  (0) 2020.09.05