728x90
300x250
https://www.acmicpc.net/problem/1966
중요도만 따로 받아서 내림차순 정렬한후에
Queue에서 확인하며 하나씩 poll, add를 반복한다.
특정 순서의 문서가 몇번째로 나갔는지를 구하는 문제기에 특정 순서도 기억할 수 있도록 별도로 Doc Class를 생성
<Java 코드>
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
//System.setIn(new FileInputStream("Test.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int T = Integer.parseInt(st.nextToken());
for (int tc = 0; tc < T; tc++) {
st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// System.out.println("===N: "+N);
Queue<Doc> q = new LinkedList<Doc>();
Integer[] imptSeq = new Integer[N];
st = new StringTokenizer(br.readLine());
for (int n = 0; n < N; n++) {
imptSeq[n] = Integer.parseInt(st.nextToken());
q.add(new Doc(imptSeq[n],n));
}
Arrays.sort(imptSeq, Collections.reverseOrder()); //내림차순 정렬
int cnt = 0;
for (int i = 0; i < N; i++) {
int qSize = q.size();
Doc d = null;
while(qSize>0) {
d = q.poll();
if(imptSeq[i] == d.impt) {
cnt++;
break;
} else {
q.add(d);
qSize--;
}
}
if(M==d.seq) {
System.out.println(cnt);
}
}
}
}
}
class Doc {
int impt;
int seq;
public Doc(int impt, int seq) {
this.impt = impt;
this.seq = seq;
}
}
728x90
'알고리즘 > 그 외' 카테고리의 다른 글
백준 5430번: AC [Deque][덱][문자열][자료구조] -Java (1) | 2023.11.21 |
---|---|
백준 15828번: Router [큐][자료구조][Queue] -Java (2) | 2023.11.20 |
백준 10845번: 큐 [큐][Queue][자료구조] -Java (0) | 2023.11.13 |
백준 1764번: 듣보잡 [자료구조][정렬][문자열] -Java (0) | 2023.11.06 |
백준 2503번: 숫자 야구 [브루트포스][구현] - Java (1) | 2023.10.18 |