반응형
필자가 작성한 코드는 통과하였지만, 실행시간이 좀 오래걸리는 단점이 있다.
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 |