프린터
Updated:
현재 있는 위치의 인덱스가 계속 바뀔수 있기 때문에, 우선순위와 인덱스를 동시에 가질수있는 Class를 만들어 문제를 풀었다. Class를 Deque의 타입 파라미터로 지정하고, 문제의 사이즈가 크지 않기 때문에,시뮬레이션을 구현을 했다.
- 현재 위치의 우선순위와 그 뒤의 우선순위들을 전부 체크를 해주고
- 만약 우선순위가 더큰것이 존재하면 맨뒤에 push를 하고, 그렇지 않다면 맨앞에서 하나씩 빼준다
- 1과 2를 정답이 있는 인덱스를 만날때까지 계속 해준다
By Java
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = 0,idx=0;
Deque<P> q = new ArrayDeque<>();
for(int value : priorities){
q.add(new P(value,idx++));
}
while(!q.isEmpty()) {
Deque<P> temp = new ArrayDeque<>(q);
int curvalue = q.peek().value,curorigin = q.peek().origin;
boolean check = false;
while(!temp.isEmpty()) {
int nextvalue = temp.peek().value;
if(curvalue<nextvalue) {
check = true;
break;
}
temp.poll();
}
if(check) {
q.add(new P(curvalue,curorigin));
q.pollFirst();
}
else {
answer++;
if(curorigin == location) {
break;
}
q.pollFirst();
}
}
return answer;
}
}
class P {
int value;
int origin;
P(int value,int origin) {
this.value = value;
this.origin = origin;
}
}
Leave a comment