티스토리 뷰

728x90

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

 

프로그래머스

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

programmers.co.kr

 

프로그래머스 고득점 코딩테스트 Kit의 스택/큐 Level 2 문제다.

 

 

먼저 priorites의 값을 큐에 넣는다.

location 위치에 있는 값이 몇번째로 인쇄되는지 구하는 문제이기 때문에

priorites의 인덱스 값과 함께 큐에 넣어야 한다.

 

큐의 가장 앞에 있는 값을 빼내고,

빼낸 값의 중요도보다 더 높은 중요도가 큐에 존재한다면 다시 큐의 맨 뒤로 넣는다.

 

location 위치의 값이 몇번째로 인쇄되는지 구하기 위해 

큐의 맨 뒤로 넣지 않고 아예 큐에서 빼냈을 때 answer를 1씩 증가시킨다.

그리고 그 빼낸 값의 인덱스와 location를 비교하여 같다면

while문을 탈출하고 answer값을 반환하면 된다.

 

import java.util.LinkedList;
import java.util.Queue;
import java.util.Iterator;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        Queue<int []> q = new LinkedList<>();
        
        for(int i=0;i<priorities.length;i++)
            q.offer(new int[] {priorities[i], i});
        
        while(!q.isEmpty()) {
            int[] i = q.poll();
            int value = i[0];
            int loc = i[1];
            
            Iterator<int[]> iter = q.iterator();
            boolean flag = false;
            
            // 큰 값 있는지 검사
            while(iter.hasNext()) {
                if(value < iter.next()[0]) {
                    flag = true;
                    q.offer(i);
                    break;
                }
            }
            
            if(!flag) {
                answer++;
                if(location == loc)
                    break;
            }
        }
        return answer;
    }
}
728x90
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함