프로그래머스 (스택/큐) 프린터
해당 문제는 문제 그대로 큐 2개를 사용하여 풀었습니다. 문제 그대로 가장 앞에 있는 값을 나머지 꺼내오는 값들과 비교하여 가장 클 경우에 complete queue에 넣고 그 외에는 그대로 다시 queue에 넣어 주는 식으로 구현하였습니다. complete queue에 넣어 줄때의 location(내가 인쇄를 요청한 문서)이 0인 경우의 complete queue의 size가 문제에서 요구하는 대기 순서입니다.
import java.util.*;
class Solution {
public int solution(int[] priorities, int location) {
int answer = location;
Queue<Integer> queue = new LinkedList<>();
Queue<Integer> completeQueue = new LinkedList<>();
for (int i=0; i< priorities.length; i++) {
queue.add(priorities[i]);
}
while(completeQueue.size() != priorities.length) {
int firstValue = queue.poll();
boolean isMaxPriority = true;
for (int i = 0; i< queue.size(); i++) {
int compareValue = queue.poll();
if (firstValue < compareValue) {
isMaxPriority = false;
}
queue.add(compareValue);
}
if (isMaxPriority) {
completeQueue.add(firstValue);
} else {
queue.add(firstValue);
}
if (isMaxPriority && location == 0) {
answer = completeQueue.size();
break;
} else if (location == 0){
location = queue.size() -1;
} else {
location--;
}
}
return answer;
}
}
'정리 > 알고리즘' 카테고리의 다른 글
스택/큐 - 다리를 지나는 트럭 (0) | 2022.02.07 |
---|---|
해시 - 베스트앨범 (0) | 2022.02.04 |
스택/큐 - 기능개발 (0) | 2022.02.03 |
해시 - 위장 (0) | 2022.02.03 |
해시 -전화번호목록 (0) | 2022.02.03 |
댓글