푸는데 꽤나 애를 먹었다. 클래스도 새로 선언해야했고, 정렬때문에 comparable도 상속받아야했다.
수를 입력받을 때 배열과 큐에 각각 저장을 한 후에 배열은 내림차순 정렬을 해주었다.
중요도가 높은게 나올때까지 poll과 add를 반복.. 중요도가 가장 높은걸 뽑고.. 그다음뽑고..
그러다가 내가 원하는게 나오면 완료
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;
class Printer implements Comparable<Printer>{
int order;
int num;
int idx;
public Printer(int num, int idx) {
this.num = num;
this.idx =idx;
}
@Override
public int compareTo(Printer o) {
return o.num- num;
}
}
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int testCase = sc.nextInt();
for(int tc=1; tc<=testCase; tc++){
int n = sc.nextInt();
int index = sc.nextInt();
Printer []arr = new Printer [n];
Queue<Printer> q = new LinkedList<>();
for(int i=0; i<n; i++){
int num = sc.nextInt();
arr[i] = new Printer(num, i);
q.add(new Printer(num, i));
}
int cnt = 0;
Arrays.sort(arr);
for(int i=0; i<arr.length; i++){
System.out.println(arr[i].idx + " " + arr[i].num);
}
while(true){
if(arr[cnt].num == q.peek().num && q.peek().idx == index){
break;
}else if(arr[cnt].idx == q.peek().idx){
q.poll();
cnt++;
}else {
Printer poll = q.poll();
q.add(poll);
}
}
System.out.println("#"+ tc + " " + (cnt+1));
}
}
}
'알고리즘' 카테고리의 다른 글
[SWEA/JAVA] 1230 암호문3 (0) | 2024.11.12 |
---|---|
[SWEA/JAVA] 2001 파리퇴치 (0) | 2024.11.11 |
[백준/JAVA] 9498 시험 성적 (2) | 2024.11.09 |
[프로그래머스/JAVA]이웃한 칸 (0) | 2024.11.08 |
[프로그래머스/JAVA] 가장 많이 받은 선물 (1) | 2024.11.07 |