🙈

⃝ 동글동글 ⃝

🪐ᐩ˖ 🍎

CodingTest/Programmers

[프로그래머스 고득점 Kit] 프로세스 - Stack/Queue - Lv2

JONG_UK 2023. 6. 1. 19:08
728x90
반응형
SMALL

⭐️ 코드 

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
반응형
LIST