코딩테스트/프로그래머스

[Java] 프로그래머스 - 프린터 (2단계)

배똥회장 2022. 5. 12. 10:26
728x90
코딩 테스트 풀이 체크리스트
2시간 내에 풀었는가? O
본인의 실력으로 풀었는가? O

 

 

코딩테스트 연습 - 프린터

일반적인 프린터는 인쇄 요청이 들어온 순서대로 인쇄합니다. 그렇기 때문에 중요한 문서가 나중에 인쇄될 수 있습니다. 이런 문제를 보완하기 위해 중요도가 높은 문서를 먼저 인쇄하는 프린

programmers.co.kr

 

 

 

 

 

import java.util.*;
class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        
        //프린트 대기열을 표현하기 위해 큐 선언
        Queue<Integer> list = new LinkedList<>();
        
        //큐에 0부터 priorities 길이 - 1만큼 숫자를 넣음
        for (int i = 0; i < priorities.length; i++) {
            list.add(i);
        }
        
        //큐가 비워질 때까지 반복
        while (!list.isEmpty()) {
        
        	//제일 먼저 들어온 숫자 꺼내기
            int p = list.poll();
            
            //꺼낸 숫자의 우선순위 선언
            int num = priorities[p];
            
            //우선순위가 높은게 있는지 없는지 체크할 용도
            boolean value = false;
            
            //priorities를 하나씩 보면서 우선순위가 더 큰게 있는지 확인하기
            for (int i = 0; i < priorities.length; i++) {
                if (i == p) continue;
                if (priorities[i] > num) {
                    value = true;
                    break;
                }
            }
            
            //만약 우선순위가 높은게 없다면
            if (!value) {
                answer++; //answer은 몇 번째 순서로 꺼내진건지를 파악하는 것 그래서 1 추가
                priorities[p] = 0; //우선순위를 끝냈으니까 0으로 리셋
                if (location == p) break; //만약 location과 숫자가 동일하다면 while 종료
            } else {
                list.add(p); //우선순위가 높은게 있다면 그냥 다시 맨 뒤로 넣기
            }
        }
        
        return answer;
    }
}

 

테스트 1 통과 (0.26ms, 74.5MB)
테스트 2 통과 (0.89ms, 81.1MB)
테스트 3 통과 (0.16ms, 73.3MB)
테스트 4 통과 (0.16ms, 89MB)
테스트 5 통과 (0.22ms, 75.8MB)
테스트 6 통과 (0.28ms, 72.2MB)
테스트 7 통과 (0.20ms, 71.8MB)
테스트 8 통과 (0.69ms, 67.4MB)
테스트 9 통과 (0.15ms, 85.4MB)
테스트 10 통과 (0.24ms, 73.7MB)
테스트 11 통과 (0.65ms, 74.4MB)
테스트 12 통과 (0.19ms, 74.7MB)
테스트 13 통과 (0.71ms, 75.7MB)
테스트 14 통과 (0.17ms, 74.6MB)
테스트 15 통과 (0.19ms, 77MB)
테스트 16 통과 (0.23ms, 77.3MB)
테스트 17 통과 (0.65ms, 78.3MB)
테스트 18 통과 (0.17ms, 80.3MB)
테스트 19 통과 (0.42ms, 78MB)
테스트 20 통과 (0.19ms, 80.3MB)

 

 

 

 

 

 

728x90