본문 바로가기

CS/Algorithm

프린터

반응형

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

 

코딩테스트 연습 - 프린터

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

programmers.co.kr

 

참고로 다른 사람들의 풀이는 대부분 while 문의 조건을 isEmpty로 설정해놨음


import java.util.LinkedList;

public class 프린터
{
    public static void main(String [] args)
    {
        int [] prio = new int[] {1, 1, 9, 1, 1, 1};
        int location = 0;

        System.out.println(solution(prio, location));
    }

    public static int solution(int[] priorities, int location)
    {
        LinkedList<Integer> arrData = new LinkedList<>();
        for (int element : priorities)
        {
            arrData.add(element);
        }

        int printCount = 0;
        while (-1 < location)
        {
            int first = arrData.get(0);
            boolean flag = false; // 뒤에 큰 수가 있으면 true
            for (int j = 1; j < arrData.size(); j++)
            {
                if (first < arrData.get(j))
                {
                    flag = true;
                    break;
                }
            }

            if (flag)
            {
                if (location == 0)
                {
                    location = arrData.size() -1;
                } else {
                    location--;
                }
                arrData.removeFirst();
                arrData.addLast(first);
            } else { // 큰 수가 없음
                printCount++;
                if (location == 0)
                {
                    return printCount;
                } else {
                    arrData.removeFirst();
                    location--;
                }
            }
        }
        return printCount;
    }
}
반응형

'CS > Algorithm' 카테고리의 다른 글

큰수 만들기  (0) 2021.06.17
짝지어 제거하기  (0) 2021.05.26
기능 개발  (0) 2021.05.15
바이너리 서치(이진 탐색)  (0) 2021.05.14
124 나라  (0) 2021.05.13