코딩테스트/프로그래머스 2단계
프로그래머스 2단계 - 프린터(스택/큐)
SICDev
2021. 9. 9. 16:47
반응형
https://programmers.co.kr/learn/courses/30/lessons/42587
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
Queue<Integer> que = new LinkedList<>();
//큐에 값 넣기
for(int i=0; i<priorities.length; i++){
que.add(priorities[i]);
}
//오름차순으로 정렬
Arrays.sort(priorities);
int maxLength = priorities.length-1;
int index = 0;
while(!que.isEmpty()){
int top = que.poll();
//큐에서 뽑은 값이 우선순위가 가장 큰 값이라면
if(top == priorities[maxLength-index]){
//그 다음 우선순위가 높은 값을 비교하기위해 index값을 ++
index++;
//내가 원하는 위치는 한칸 앞으로 이동
location--;
//0 보다 작다는건 제일 앞에 있었다는 뜻.
if(location < 0){
return index;
}
}else{
//맨뒤로 넣는다.
que.add(top);
//내가 원하는 위치는 한칸 앞으로 이동
location--;
//제일 앞에 있었으면 다시 맨뒤로 이동
if(location < 0){
location = que.size()-1;
}
}
}
return index;
}
}
반응형