[Programmers] : 스택/큐 :: 프린터

문제

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

내가한거

package org.kyhslam;

import java.util.*;

public class stack02 {

    public static class Task {
        private int priority;
        private int location;

        public Task(int priority, int location) {
            this.priority = priority;
            this.location = location;
        }
    }

    public static int solution(int[] priorities, int location) {
        int answer = 0;
        Queue<Task> queue = new LinkedList<>();
        ArrayList<Integer> priority = new ArrayList<>();


        for(int i=0; i < priorities.length; i++) {
            queue.add(new Task(priorities[i], i));
            priority.add(priorities[i]);
        }
        System.out.println("properties == " + Arrays.toString(priorities));
        Collections.sort(priority, Comparator.reverseOrder());
        System.out.println("sorted == " + priority);

        int priorityIndex = 0;
        while(!queue.isEmpty()) {
            Task t = queue.remove();

            if(t.priority == priority.get(priorityIndex)){
                answer++;
                priorityIndex++;
                if(t.location == location){
                    System.out.println("정답: " + answer);
                }
            }else{
                queue.add(t);
            }

            System.out.println(t.priority + " , " + t.location);
        }
        System.out.println(queue);
        return 0;
    }



    public static void main(String[] args) {
        // [1, 1, 9, 1, 1, 1]	0	5
        int[] properties = {2,1,3,2};
        //int[] properties = {1,1,9,1,1,1};
        int location = 2;

        solution(properties, location);


    }
}

 

 

다른풀이

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        int l = location;

        Queue<Integer> que = new LinkedList<Integer>();
        for(int i : priorities){
            que.add(i);
        }

        Arrays.sort(priorities);
        int size = priorities.length-1;



        while(!que.isEmpty()){
            Integer i = que.poll();
            if(i == priorities[size - answer]){
                answer++;
                l--;
                if(l <0)
                    break;
            }else{
                que.add(i);
                l--;
                if(l<0)
                    l=que.size()-1;
            }
        }

        return answer;
    }
}

댓글

Designed by JB FACTORY