본문 바로가기

프로그래머스

프로그래머스 '프린터' 문제풀이(JAVA) - Henry's Algorithm

반응형

 

 

 

안녕하세요

Henry's Algorithm의 Henry입니다.

 

오늘은 제가 프로그래머스 

Level 2의 프린터 문제를 풀어보았습니다.

 

첫 시도는 잘 안풀렸는데,

다음날 다시 풀어보니까, 생각이 잘 정리되서 잘 풀렸네요!ㅎㅎ

 

 

문제는 푸는 요령:

저는 Queue 자료구조를 사용해서 풀었습니다.

priorities와 index 정보를 가지고 있는 배열 각각 1개씩 만들고,

while 문을 통해 priorities가 모두 pop 되기 전까지 우선순위를 비교하는 과정을 반복했습니다.

 

- java.util.Collections을 import해서 List의 최대, 최소를 구할 수 있어, 해당 라이브러리를 사용했습니다.

 

아래는 제가 푼 코드입니다.

import java.util.Queue;
import java.util.LinkedList;
import java.util.*;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        
        Queue<Integer> indexs = new LinkedList<>();
        Queue<Integer> priors = new LinkedList<>();
        
        for(int i = 0; i< priorities.length; i++){
            priors.add(priorities[i]);
            indexs.add(i);
        }
        
        while(!priors.isEmpty()){
            int front = priors.poll();
            int frontIdx = indexs.poll();
            
            int max = priors.isEmpty() ? -1 : Collections.max(priors);
            
            if(max == -1){
                return answer + 1;
            }
            
            if(front >= max){
                answer += 1;
                if(frontIdx == location){
                    return answer;
                }
                continue;
            }
            
            priors.add(front);
            indexs.add(frontIdx);
        }
        
        return answer;
    }
}

 

 

오늘도 즐거운 코딩되세요~!ㅎㅎ

반응형