프로그래머스 - 프린터(스택/큐)

구잉·2021년 10월 24일
0

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

  1. que에 priorities값과 순서를 입력한다.

  2. 큐에서 하나를 출력하여 값을 저장하고(set) 그 값과 que안에 있는 값을 비교한다. 이때, set의 값보다 큰 값이 큐에 존재하면 다시 큐에 집어넣고 pass=true로 출력부분을 넘긴다.

  3. 만약 큰 값이 존재하지 않아 pass = false이면 set은 다시 프린트가 되는 것이므로 score에 1을 더해준다. 이 때 set의 순서가 location과 같으면 answer를 구했음으로 반복문을 끝내고 그렇지 않으면 다시 2번부터 반복한다.

import java.util.*;

class setting{
    int value;
    int order;
    
    public setting(int value, int order){
        this.value = value;
        this.order = order;
    }
}
class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        boolean pass = false;
        int score = 0;
        Queue<setting> que = new LinkedList<>();
        
        for(int k = 0 ; k < priorities.length ; k++){
            que.add(new setting(priorities[k], k));
          
        }
        
        while(!que.isEmpty()){
            pass = false;
            setting set = que.poll();
            int val = set.value;
            int num = set.order;
            for(setting n : que){
                if(val < n.value){
                    que.add(set);
                    pass = true;
                    break;
                }
                
            }
            //출력부분
            if(pass == false){
                
                score++;
                
                
                if(location == num){
                
                    answer = score;
                    break;
                }
            }
            
        }
        
        return answer;
    }
}
profile
시작을 두려워하지말자

0개의 댓글