-
[java] 백준 알고리즘 1966번 프린터 큐 풀이알고리즘/백준 알고리즘 2018. 6. 25. 13:32
단순히 큐를 이용하는 것에서 부가적으로 중요한 것부터 출력해내야 하는 것이 문제의 핵심이다.
* 풀이 소스
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556public class Baekjoon1966 {static StringTokenizer st;static Queue<Integer> importance;public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));st = new StringTokenizer(br.readLine());int testCase = Integer.parseInt(st.nextToken());for(int t=0; t<testCase; t++) {st = new StringTokenizer(br.readLine());int docCount = Integer.parseInt(st.nextToken());int wantToKnowNumOrder = Integer.parseInt(st.nextToken());importance = new LinkedList<Integer>(); // 중요도가 들어간 배열int[] sortedArray = new int[docCount]; // 중요도를 오름차순으로 정렬하기 위한 배열st = new StringTokenizer(br.readLine());for(int i=0; i< docCount; i++) {int importanceNum = Integer.parseInt(st.nextToken());importance.add(importanceNum);sortedArray[i] = importanceNum;}Arrays.sort(sortedArray); // 중요한 것부터 출력하기 위해 따로 배열을 만들어 오름차순 정렬int importanceOrder = sortedArray.length-1; // 중요도가 가장 큰 것부터 출력하기 위한 순서int order = 0; // 출력 횟수int calCount = 0; // 입력 순서에 맞춰서 순서를 기억하기 위한 변수while(true) {int pollNum = importance.poll();if(calCount == wantToKnowNumOrder) { // 큐에서 out 될 때 알고싶은 00번째 수를 알 수 있다.pollNum += 101; // 주어지는 수가 100이하이므로 다른 위치에 똑같은 중요도가 나오더라도 다른 점수로 만들어줌}calCount++;if(sortedArray[importanceOrder] == pollNum-101) { // 알고 싶은 수의 중요도만 101을 넘어가기 때문에 해당 숫자가 나오면 끝.order++;bw.write(String.valueOf(order));bw.newLine();break;}else if(sortedArray[importanceOrder] == pollNum){ // 중요도가 높은 것이 출력되면 다음 중요도가 높은 것으로 이동order++;importanceOrder--;}else {importance.add(pollNum); // 어느 해당 사항도 없으면 다시 큐 맨 뒤로 추가해준다}}}bw.flush();}}cs '알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[java] 백준 알고리즘 2108번 통계학 풀이 (0) 2018.07.04 [java] 백준 알고리즘 2751번 수 정렬하기2 풀이 (0) 2018.06.26 [java] 백준 알고리즘 2448번 별찍기-11 풀이 (0) 2018.06.25 [java] 백준 알고리즘 2581번 소수 풀이 (0) 2018.06.14 [java] 백준 알고리즘 1978번 소수 찾기 풀이 (0) 2018.06.14