CodingTest/Programmers
[프로그래머스 고득점 Kit] 프로세스 - Stack/Queue - Lv2
JONG_UK
2023. 6. 1. 19:08
728x90
반응형
⭐️ 코드
import java.util.*;
class Solution {
private static class Node {
int priority;
int idx;
public Node(int priority, int idx) {
this.priority = priority;
this.idx = idx;
}
}
public int solution(int[] priorities, int location) {
int answer = 0;
ArrayDeque<Node> queue = new ArrayDeque<>();
for (int i = 0; i < priorities.length; i++) {
queue.add(new Node(priorities[i], i));
}
// 숫자가 높을 수록 우선순위가 높음
while (!queue.isEmpty()) {
Node now = queue.pollFirst();
if (getHighPriority(now.priority, queue)) {
// 우선순위가 제일 높으면
answer++;
if (now.idx == location) {
return answer;
}
}
else {
// 우선순위가 낮으면
queue.addLast(now);
}
}
return answer;
}
private static boolean getHighPriority(int nowPriority, ArrayDeque<Node> queue) {
ArrayDeque<Node> copy = new ArrayDeque<>();
copy = queue.clone();
while (!copy.isEmpty()) {
Node now = copy.pollFirst();
if (now.priority > nowPriority) {
return false;
}
}
return true;
}
}
💊 오답 노트
풀긴 풀었는데 뭔가 좀 이상하다. 스택 큐 카테고리 안에 있어서 스택 큐를 이용하기 위해 ArrayDeque를 사용했다. 코드 중에서 getHighPriority 부분이 계속 수행되어야 하는 문제가 있는데 이 부분을 해결하면 좋은 코드가 될 것 같다!
우선순위 큐를 사용해야 할 것 같은데 난 쓸줄 몰라서 못해똬...
👀 후기
내가 푼 게 다 틀린 것만 같은 느낌이 든다....ㅜㅜ
728x90
반응형