-
[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) 없을 경우에는 요청한 문서인지 확인한다.
소스코드
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import 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