접근 방법
우선순위 큐를 사용하려고 했는데 그러면 중요도가 같은 문서들이 어떤 순서로 출력될지 모른다는 문제가 있다.
→ 문제에서 요구한대로 직관적으로 구현했다.
소스 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
import java.util.StringTokenizer;
public class Main {
static BufferedReader br;
static StringTokenizer st;
static int T, N, M;
static int[] priority;
static Queue<int[]> pq;
static int answer;
public static void main(String[] args) throws IOException {
br = new BufferedReader(new InputStreamReader(System.in));
T = Integer.parseInt(br.readLine());
for (int i = 0; i < T; i++) {
st = new StringTokenizer(br.readLine(), " ");
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
priority = new int[N];
pq = new LinkedList<>();
st = new StringTokenizer(br.readLine(), " ");
for (int j = 0; j < N; j++) {
priority[j] = Integer.parseInt(st.nextToken());
pq.offer(new int[]{j, priority[j]});
}
answer = print(M);
System.out.println(answer);
}
}
private static int print(int x) {
int count = 0;
while (!pq.isEmpty()) {
int[] nx = pq.poll();
boolean able = true;
for (int[] q : pq) {
if (q[1] > nx[1]) {
able = false;
}
}
//System.out.println("idx : " + nx[0] + " nx : " + nx[1] + " able : " + able);
if (able) {
count += 1;
if (nx[0] == x) {
return count;
}
} else {
pq.offer(nx);
}
}
return 0;
}
}
출처
https://www.acmicpc.net/problem/1966
'Algorithm' 카테고리의 다른 글
Programmers Level1. 신규 아이디 추천 (java) (0) | 2021.04.21 |
---|---|
Programmers Level1. 크레인 인형뽑기 게임 (java) (0) | 2021.04.19 |
Baekjoon #13549 숨바꼭질3 (java, 다익스트라, 우선순위큐) (0) | 2021.04.13 |
Baekjoon #9019 DSLR (java) (0) | 2021.04.11 |
Baekjoon #2146 다리만들기 (java) (0) | 2021.04.10 |