프린터

J·2021년 4월 9일
0

코딩테스트 연습

목록 보기
28/28

List 이용하기

import java.util.ArrayList;

class Solution {
    public int solution(int[] priorities, int location) {
        int answer = 0;
        ArrayList<Integer> list = new ArrayList<>();
        for (int i : priorities)
            list.add(i);

        while (true){
            boolean flag = true;
            for (int k=1;k<list.size();k++){ //그때그때 최대값 찾기
                if(list.get(0)<list.get(k)){ //2번조건 뒤로가기
                    if(location==0) {  //요청한 문서가 제일 앞에 있을 때
                        location = list.size();
                    }
                    flag = false;
                    list.add(list.get(0));
                    list.remove(0);
                    break;
                }
            }
            location -= 1;

            if(flag){ //3번 조건
                list.remove(0);
                answer++;
                if(location == -1) break;
            }
        }

        return answer;
    }
}

Queue 이용하기

배열을 정렬해서 최대값부터 큐와 비교하기

import java.util.*;

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

        Queue<Integer> q = new LinkedList<>();
        for (int k : priorities) q.add(k);

        Arrays.sort(priorities);

        while (location != -1){
            Integer poll = q.poll();
            if(poll<priorities[priorities.length-1-answer]){ // Q값이 최대값보다 작을 때
                q.add(poll);
                if(location==0) location = q.size();
                location--;
            }else{ // 출력
                location--;
                answer++;
            }
        }

        return answer;
    }
}

0개의 댓글