코딩테스트/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