๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 1966๋ฒ ํ๋ฆฐํฐ ํ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
๋ฌธ์
์์ ์ ๋ ฅ & ์ถ๋ ฅ
ํด๊ฒฐ๋ฒ
์ฃผ์ ํด์ผํ ์ ์ m์ 0๋ถํฐ ์์ํ๋ค.
์ด ์ ์ ์ผ๋ํ๊ณ ์ด ๋ฌธ์ ์์๋ ํ๋ฅผ ์ด์ฉํ๋ค.
์
๋ ฅ๋๋ ๋ชจ๋ ์๋ฅผ ํ์ enqueueํ๊ณ ๋ฐ๋ณต์ ๋๋ฉฐ ํ๋์ฉ ๊ฒ์ฆํ๋ค.
ํ ๋ฒ์ ๊ฒ์ฆ์์ ์ฐพ์ผ๋ ค๋ ๋ฌธ์์ ์ธ๋ฑ์ค์ ๋ค๋ฅด๋ฉด count๋ฅผ 1์ฉ ์ฆ๊ฐ ์ํค๊ณ , ๋ช ๋ฒ์งธ๋ก ์ธ์๋์๋์ง ๊ถ๊ธํ ๋ฌธ์์ index์ ๋น๊ตํ์ฌ ๊ฐ์ผ๋ฉด count๋ฅผ ์ถ๋ ฅํ๋ ๋ฐฉ์์ผ๋ก ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ค.
์ ๊ทผ๋ฒ
๋ฌธ์์ ์ค๋ณต์ด ๋ฐ์ํ ์ ์๋๋ฐ, ์ด ๋ฌธ์ ๋ฅผ ๋ฌธ์ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด์ ํด๊ฒฐํ ์ ์๋ค.
class Data {
int num; // ๋ฌธ์์ ์ค์๋
int flag; // ๊ถ๊ธํ ๋ฌธ์์ธ์ง ์๋์ง ํ๋ณํ๋ flag
}
์ ๋ต ์ฝ๋
import java.io.*;
import java.util.*;
class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
while(t-- > 0) {
String[] nm = br.readLine().split(" ");
int n = Integer.parseInt(nm[0]);
int m = Integer.parseInt(nm[1]);
Queue<Data> queue = new LinkedList<>();
String[] str = br.readLine().split((" "));
int[] priorities = new int[n];
for (int i = 0; i < str.length; i++) {
priorities[i] = Integer.parseInt(str[i]);
Data data = new Data(Integer.parseInt(str[i]), m == i);
queue.add(data);
}
reverseOrder(priorities);
int index = 0;
while(!queue.isEmpty()) {
Data now = queue.remove();
int stage = priorities[index];
if(stage == now.num) {
if(now.flag) {
bw.write(++index + "\n");
break;
}
++index;
}else {
queue.add(now);
}
}
}
bw.flush();
bw.close();
}
private static void reverseOrder(int[] arr) {
Arrays.sort(arr);
int start = 0;
int end = arr.length - 1;
while(start < end) {
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
start++;
end--;
}
}
}
class Data {
int num;
boolean flag;
Data(int num, boolean flag){
this.num = num;
this.flag = flag;
}
}
๋๊ธ