문제 : boj11637
우선 직관적으로 생각하기엔 아주 간단하다. 각 테스트 케이스에 대해 n명의 득표 수 합계(이하 sum)를 구하고, 그 n명 중 가장 큰 값(이하 max)을 기준으로 다음과 같이 나뉜다.
1. max값을 가졌던 인원이 2명 이상인 경우 : no winner
2. sum/2+1 <= max 인 경우 : majority winner
3. 그 이외 : minority winner
이걸 구현만 하면 된다!
코드 : github
import java.io.DataInputStream;
import java.io.IOException;
public class Main extends FastInput {
private static final String MAJOR_WINNER = "majority winner ";
private static final String MINOR_WINNER = "minority winner ";
private static final String NO_WINNER = "no winner";
private void solution() throws Exception {
int t = nextInt();
StringBuilder sb = new StringBuilder();
while (t-->0) {
int n = nextInt();
int max = 0;
int maxIdx = -1;
int sum = 0;
int idx = 0;
boolean chk = true;
while (idx++<n) {
int cur = nextInt();
if (max<cur) { max=cur; maxIdx=idx; chk=true; }
else if (max==cur) { chk=false; }
sum+=cur;
}
if (!chk) sb.append(NO_WINNER);
else if (max>=sum/2+1) sb.append(MAJOR_WINNER).append(maxIdx);
else sb.append(MINOR_WINNER).append(maxIdx);
sb.append('\n');
}
System.out.print(sb);
}
public static void main(String[] args) throws Exception {
initFI();
new Main().solution();
}
}
class FastInput {
private static final int DEFAULT_BUFFER_SIZE = 1 << 16;
private static DataInputStream inputStream;
private static byte[] buffer;
private static int curIdx, maxIdx;
protected static void initFI() {
inputStream = new DataInputStream(System.in);
buffer = new byte[DEFAULT_BUFFER_SIZE];
curIdx = maxIdx = 0;
}
protected static int nextInt() throws IOException {
int ret = 0;
byte c = read();
while (c <= ' ') c = read();
do {
ret = ret * 10 + c - '0';
} while ((c = read()) >= '0' && c <= '9');
return ret;
}
private static byte read() throws IOException {
if (curIdx == maxIdx) {
maxIdx = inputStream.read(buffer, curIdx = 0, DEFAULT_BUFFER_SIZE);
if (maxIdx == -1) buffer[0] = -1;
}
return buffer[curIdx++];
}
}
'PS > BOJ' 카테고리의 다른 글
백준 17162 자바 - 가희의 수열놀이 (Small) (BOJ 17162 JAVA) (0) | 2022.03.18 |
---|---|
백준 2602 자바 - 돌다리 건너기 (BOJ 2602 JAVA) (0) | 2022.03.18 |
백준 5568 자바 - 카드 놓기 (BOJ 5568 JAVA) (0) | 2022.03.16 |
백준 18258 자바 - 큐 2 (BOJ 18258 JAVA) (0) | 2022.03.15 |
백준 3022 자바 - PRASE (BOJ 3022 JAVA) (0) | 2022.03.14 |
댓글