https://www.acmicpc.net/problem/1966
1966번: 프린터 큐
여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에
www.acmicpc.net
해석 및 팁
이 문제는 Deque를 활용하면 됩니다. 중요도를 입력받는 q와 인덱스를 입력받는 index deque를 만들어서 가장 앞에 있는 값이 max인 경우 횟수를 증가시켜 주고 제외시킵니다. 그 수의 인덱스가 입력받은 m인 경우 count값을 출력시켜 주면 됩니다. max값이 아닌 경우에는 중요도와 인덱스를 가장뒤로 보내면 됩니다.
Java 코드
import java.util.Scanner;
import java.util.Deque;
import java.util.LinkedList;
import java.util.Collections;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
int t = sc.nextInt();
for(int i = 0; i < t; i++) {
Deque<Integer> q = new LinkedList<>();
Deque<Integer> index = new LinkedList<>();
int n = sc.nextInt();
int m = sc.nextInt();
int count = 0;
for(int j = 0; j < n; j++) {
q.add(sc.nextInt());
index.add(j);
}
while(true) {
int max = Collections.max(q);
if(q.peek() == max) {
count++;
q.poll();
if(index.poll() == m) {
sb.append(count+"\n");
break;
}
}
else {
q.add(q.poll());
index.add(index.poll());
}
}
}
System.out.println(sb);
}
}
'백준' 카테고리의 다른 글
백준 15652 N과 M (4)(Java) (0) | 2023.02.01 |
---|---|
백준 15651 N과 M (3)(Java) (0) | 2023.02.01 |
백준 2193 이친수(Java) (0) | 2023.01.31 |
백준 11727 2×n 타일링 2(Java) (0) | 2023.01.31 |
백준 9461 파도반 수열(Java) (0) | 2023.01.31 |