Algorithm/Programmers Java

Java 프로그래머스 프로세스

제우제우 2024. 3. 4. 22:16

https://school.programmers.co.kr/learn/courses/30/lessons/42587

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제 분류 : 코딩테스트 연습 > 스택/큐 > 프로세스

난이도 : 2

 

정답 코드

import java.util.*;
class Solution {
    static class node{
        int idx; int value; 
        public node(int idx, int value){
            this.idx = idx; this.value = value;
        }
    }
    public int solution(int[] priorities, int location) {
        int [] answer = new int [priorities.length];
        Queue<node> q = new LinkedList<>();
        Stack<Integer> stack = new Stack<>();
        for(int i = 0; i < priorities.length; i++){
            q.add(new node(i , priorities[i]));
        }
        Arrays.sort(priorities);
        for(int i = 0; i < priorities.length; i++){
            stack.push(priorities[i]);
        }
        int cnt = 1;
        while(!stack.isEmpty()){
            node node = q.poll();
            if(stack.peek() != node.value){
                q.add(node);
                continue;
            }
            stack.pop();
            answer[node.idx] = cnt;
            cnt++;
        }
        return answer[location];
    }
}