Skip to content

Commit 60cb503

Browse files
authored
Merge pull request #97 from AlgorithmWithGod/suyeun84
[20250212] BOJ / G4 / 소수 게임 / 김수연
2 parents 90fa6db + 27cba0e commit 60cb503

File tree

1 file changed

+76
-0
lines changed

1 file changed

+76
-0
lines changed
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
```java
2+
import java.util.*;
3+
import java.io.*;
4+
5+
class Solution
6+
{
7+
static ArrayList<Integer> dList;
8+
static ArrayList<Integer> gList;
9+
static long dScore = 0;
10+
static long gScore = 0;
11+
static boolean[] prime = new boolean[5000001];
12+
static boolean[] primeExist = new boolean[5000001];
13+
public static void main(String[] args) throws Exception{
14+
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
15+
StringTokenizer st = new StringTokenizer(br.readLine());
16+
17+
dList = new ArrayList<>();
18+
gList = new ArrayList<>();
19+
20+
primeNumber();
21+
int N = Integer.parseInt(st.nextToken());
22+
for (int i = 0; i < N; i++) {
23+
st = new StringTokenizer(br.readLine());
24+
int d = Integer.parseInt(st.nextToken());
25+
int g = Integer.parseInt(st.nextToken());
26+
//1. 소수 아닌 수 -> 상대방은 지금까지 상대방이 말한 소수 중 3번째로 큰 수만큼 점수 (3개 미만 -> 1000점)
27+
//2. 이미 등장한 소수 -> 해당 팀 -1000, 기록x
28+
if (prime[d]) { // 소수 아님
29+
if (gList.size() < 3) {
30+
gScore += 1000;
31+
} else if (gList.size() >= 3) {
32+
gScore += gList.get(0);
33+
}
34+
} else {
35+
if (primeExist[d]) dScore -= 1000;
36+
else {
37+
dList.add(d);
38+
primeExist[d] = true;
39+
Collections.sort(dList);
40+
if (dList.size() > 3) dList.remove(0);
41+
}
42+
}
43+
if (prime[g]) {
44+
if (dList.size() < 3) {
45+
dScore += 1000;
46+
} else if (dList.size() >= 3) {
47+
dScore += dList.get(0);
48+
}
49+
} else {
50+
if (primeExist[g]) gScore -= 1000;
51+
else {
52+
gList.add(g);
53+
primeExist[g] = true;
54+
Collections.sort(gList);
55+
if (gList.size() > 3) gList.remove(0);
56+
}
57+
}
58+
}
59+
if (dScore > gScore) System.out.println("소수의 신 갓대웅");
60+
else if (dScore == gScore) System.out.println("우열을 가릴 수 없음");
61+
else System.out.println("소수 마스터 갓규성");
62+
}
63+
64+
public static void primeNumber() { //소수 아닌게 true
65+
prime[0] = true;
66+
prime[1] = true;
67+
for (int i = 2; i*i <= 5000000; i++) {
68+
if (prime[i]) continue;
69+
for (int j = i*2; j <= 5000000; j+=i) {
70+
prime[j] = true;
71+
}
72+
}
73+
}
74+
}
75+
76+
```

0 commit comments

Comments
 (0)