728x90
문제
접근 방법
1. 문제에서 나온 방식 그대로 구현하는 문제이다.
2. 하지만 queue로 했을때는 인덱스를 알지 못하므로 LinkedList를 사용하였습니다.
코드
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
private static StringBuilder sb;
private static BufferedReader br;
private static StringTokenizer st;
private static int T;
private static int N,M;
private static LinkedList<int[]> que;
private static int count;
//입력
public static void input() throws Exception {
br = new BufferedReader(new InputStreamReader(System.in));
sb = new StringBuilder();
T = Integer.parseInt(br.readLine());
for(int tc = 0 ; tc < T ; tc++){
st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
que = new LinkedList<>();
for(int i = 0 ; i < N ; i++){
que.add(new int[] {Integer.parseInt(st.nextToken()) , i});
}
process();
}
}
//실행
public static void process() {
count = 0 ;
while(!que.isEmpty()){
int[] q = que.poll();
boolean max = true;
for(int i = 0 ; i < que.size() ; i++){
if(q[0] < que.get(i)[0]){
que.add(q);
for(int j = 0 ; j < i ; j++){
que.add(que.poll());
}
max = false;
break;
}
}
if(!max) continue;
count++;
if(q[1] == M){
break;
}
}
sb.append(count).append("\n");
}
public static void main(String[] args) throws Exception {
input();
System.out.println(sb);
}
}
'코딩테스트 > 백준' 카테고리의 다른 글
[Java] 백준 2108번 : 통계학 (0) | 2024.04.29 |
---|---|
[Java] 백준 1978번 : 소수 찾기 (0) | 2024.04.26 |
[Java] 백준 1929번 : 소수 구하기 (0) | 2024.04.25 |
[Java] 백준 1920번 : 수 찾기 (1) | 2024.04.25 |
[Java] 백준 3964번 : 팩토리얼과 거듭제곱 (0) | 2024.04.22 |