ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Programmers] 프린터
    Algorithm/Programmers 2020. 5. 29. 15:19

    [Level 2] 프린터

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

    • 새롭게 개발한 프린터는 아래와 같은 방식으로 인쇄 작업을 수행합니다.
    • 1. 인쇄 대기 목록의 가장 앞에 있는 문서(J)를 대기 목록에서 꺼냅니다.
    • 2. 나머지 인쇄 대기 목록에서 J 보다 중요도가 높은 문서가 한 개라도 존재하면 J를 대기 목록의 가장 마지막에 넣습니다.
    • 3. 그렇지 않으면 J를 인쇄합니다.

     

     

    Solution

    • LinkedList를 사용해 맨 앞에서 부터 하나씩 꺼내 나머지 문서중에 value가 높은 문서가 있는지 확인한다.
    • (1) 있으면 리스트의 마지막에 넣고 (2) 없을 경우에는 요청한 문서인지 확인한다. 

     

     

    소스코드

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    import java.util.*;
     
    class Solution {
        static LinkedList<Doc> list;
        static int count, answer;
        
        static class Doc{
            private int idx;
            private int value;
            
            public Doc(int idx, int value){
                this.idx = idx;
                this.value = value;
            }
        }
        public int solution(int[] p, int l) {
            init();
            for(int i = 0; i<p.length; i++){
                list.add(new Doc(i, p[i]));
            }
            
         loop: while(!list.isEmpty()){
                Doc cur = list.removeFirst();
                boolean flag = false;
                for(int i = 0; i<list.size(); i++){  
                   if(cur.value < list.get(i).value){
                       flag  =  true;
                       break;
                   }
                }
                 // (1)
    if(flag){
                        list.addLast(cur);
                     continue;
                   }
    // (2)
    else {
                     count++;
                     if(!flag && cur.idx == l){
                        answer = cur.idx;
                       break loop;
                     }
                     }
                    
            }
            answer = count;
            return answer;
        }
        
        public static void init(){
            list = new LinkedList<>();
            count = 0;
        }
    }
      cs

     

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

    [Programmers] 다리를 건너는 트럭  (0) 2020.05.30
    [Programmers] 스킬트리  (0) 2020.05.30
    [Programmers] 주식가격  (0) 2020.05.29
    [Programmers] 베스트앨범  (0) 2020.04.24
    [Programmers] 종이접기  (0) 2020.04.23

    댓글

Designed by Tistory.