๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/11637)
< ์ธ๊ธฐ ํฌํ >
๋ฌธ์ ํ์ด
์ฐ์ ์์ ํ์ R๊ณผ ํฌํ์๋ฅผ ์ ์ฅํ๋ค. ํฌํ์๊ฐ ๋ง์ ์์๋๋ก ์ ๋ ฌํ์ฌ ํฌํ ์๊ฐ 2๋ช ์ด์ ๊ฐ๋ค๋ฉด "no winner"๋ฅผ ์ถ๋ ฅํ๋ค. 2๋ช ์ด์ ๊ฐ์ง ์๋ค๋ฉด ๊ณผ๋ฐ์์ธ์ง ์ ๋ฐ ์ดํ์ธ์ง ํ์ธ ํ ์ถ๋ ฅํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Comparator;
import java.util.PriorityQueue;
public class _11637_ { // ์ธ๊ธฐ ํฌํ
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(bf.readLine());
PriorityQueue<int[]> queue = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o2[1] - o1[1];
}
});
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(bf.readLine());
int sum = 0;
for (int k = 0; k < n; k++) {
int x = Integer.parseInt(bf.readLine());
sum += x;
queue.add(new int[] { k + 1, x });
}
int temp[] = queue.poll();
if (temp[1] == queue.peek()[1]) {
bw.write("no winner \n");
} else {
if (temp[1] > sum / 2)
bw.write("majority winner " + temp[0] + "\n");
else
bw.write("minority winner " + temp[0] + "\n");
}
queue.clear();
}
bw.flush();
}
}
Main
๋ณ์)
t : ํ ์คํธ ์ผ์ด์ค ์
queue : ์ฐ์ ์์ ํ <ํ๋ณด์ ๋ฒํธ, ๋ํ ์>
n : ํ๋ณด์ ์
sum : ์ด ๋ํ ์
- ํ ์คํธ ์ผ์ด์ค ์(t) ์ ๋ ฅ
- ํ ์คํธ ์ผ์ด์ค ์(t) ๋งํผ ๋ฐ๋ณต
: ํ๋ณด์ ์(n) ์ ๋ ฅ
: ํ๋ณด์ ์๋งํผ ํ๋ณด์์ ๋ํ ์๋ฅผ ์ ๋ ฅ๋ฐ์ queue์ ์ ์ฅ ๋ฐ ์ด ๋ํ ์์ ํฉ
: queue์์ ๋ฝ์ ๊ฒ๊ณผ ๋ค์ queue ๊ฐ์ ๋ํ ์๊ฐ ๊ฐ๋ค๋ฉด ์ต๋ค ๋ํ์๊ฐ ์๋ ๊ฒ์ด๋ฏ๋ก "no winner" ์ถ๋ ฅ
: ๊ฐ์ง ์๋ค๋ฉด ์ด ๋ํ ์์ ์ ๋ฐ์ด ๋๋์ง ํ์ธ ํ ๋์ผ๋ฉด "majority winner" ์ถ๋ ฅ, ์ ๋ฐ์ด ๋์ง ์์ผ๋ฉด "minority winner" ์ถ๋ ฅ
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 25496_์ฅ์ ๊ตฌ ๋ช ์ฅ ์์ค (5) | 2023.10.27 |
---|---|
[Baekjoon] 5648_์ญ์์ ์ ๋ ฌ (1) | 2023.10.26 |
[Baekjoon] 9575_ํ์ด์ ์ (1) | 2023.10.24 |
[Baekjoon] 1058_์น๊ตฌ (1) | 2023.10.23 |
[Baekjoon] 1956_์ด๋ (0) | 2023.10.20 |