본문 바로가기
CodingTest/Programmers

[Programmers] 프로세스

by 창브로 2025. 4. 7.

[문제 링크]

https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=java

 

프로그래머스

SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 

[풀이 과정]

문제에 나와있는 설명 그대로 구현하면 된다.코드에 주석을 달아놨으니 코드를 따라 보면서 이해하면 좋을 것 같습니다.

 

[코드]

import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        Queue<int[]> queue = new LinkedList<>();
        
        // 실행된 순서대로 원래 idx를 담을 예정인 배열
        ArrayList<Integer> arr = new ArrayList<>();
        
        // queue에 담기
        for(int i = 0; i < priorities.length; i++) {
            queue.add(new int[] {i, priorities[i]});
        }
        
        // queue가 빌때까지 반복
        while(!queue.isEmpty()) {
            int maxValue = 0;
            
            // queue에서 우선순위 max값을 찾는다
            for(int[] i : queue) {
                if(maxValue < i[1]) {
                    maxValue = i[1];
                }
            }
            
            // 가장 먼저 넣은 queue값
            int[] recentQueue = queue.poll();
            
            // recentQueue[1] = 우선순위
            // recentQueue[0] = 원래 idx값
            
            // maxValue와 우선순위가 같으면 빼서 arr에 추가
            if(recentQueue[1] == maxValue) {
                arr.add(recentQueue[0]);
            } else { // 아니면 빼고 다시 제일 뒤로
                queue.add(recentQueue);
            }
        }
        
        // 문제에서 원하는 idx값이 어디있는지 배열을 탐색
        for(int i = 0; i < arr.size(); i++) {
            if(arr.get(i) == location) {
                // 쉽게 말해 i = idx 값 = 나온 순서
                // +1을 하는 이유는 idx는 0부터 시작하기 때문
                answer = i+1;
                break;
            }
        }
        
        return answer;
    }
}

[회고]

문제를 잘 읽으니 쉬운 문제였습니다.

제한시간도 널널하여 for문과 while문을 마구 사용하였습니다.

 

 

 

 

질문과 피드백은 언제나 환영입니다.

감사합니다.

'CodingTest > Programmers' 카테고리의 다른 글

[Programmers] 주식가격  (0) 2025.04.12
[Programmers] 다리를 지나는 트럭  (0) 2025.04.10
[Programmers] 올바른 괄호  (1) 2025.04.03
[Programmers] 기능개발  (0) 2025.04.03
[Programmers] 베스트앨범  (0) 2025.04.01