๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/6588)
< ๊ณจ๋๋ฐํ์ ์ถ์ธก >
๋ฌธ์ ํ์ด
์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ํ์ฉํ์ฌ ๋ฏธ๋ฆฌ ์์๋ฅผ ํ๋ณํด ๋๋ค. ์๋ฅผ ์ ๋ ฅ๋ฐ์ 2๋ถํฐ (์ ๋ ฅ๋ฐ์ ์/2)๊น์ง ํ์ํ์ฌ ์์์ ํฉ์ผ๋ก ๋ํ๋ผ ์ ์๋์ง ํ์ธํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class _6588_ { // ๊ณจ๋๋ฐํ์ ์ถ์ธก
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
boolean arr[] = new boolean[1000001];
for (int i = 2; i <= 500001; i++) {
if (!arr[i]) {
for (int j = i + i; j < 1000001; j += i) {
arr[j] = true;
}
}
}
int num = 0;
while ((num = (Integer.parseInt(bf.readLine()))) != 0) {
int x = 0, y = 0;
for (int i = 2; i <= num / 2; i++) {
if (!arr[i] && !arr[num - i]) {
x = i;
y = num - i;
break;
}
}
if (x != 0 && y != 0) {
bw.write(num + " = " + x + " + " + y + "\n");
} else {
bw.write("Goldbach's conjecture is wrong.\n");
}
}
bw.flush();
}
}
๋ณ์)
arr : ์์ ํ๋ณ
num : ์ ๋ ฅ๋ฐ์ ๊ฐ
x, y : num์ ์ด๋ฃจ๋ ๊ฐ
์๋ผํ ์คํ ๋ค์ค์ ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ 1000000๊น์ง ์์๋ฅผ ํ๋ณํ๋ค. 0์ด ์๋ ๋๊น์ง ๊ฐ์ ์ ๋ ฅ๋ฐ๋๋ค. 2๋ถํฐ (์ ์/2)๊น์ง ํ์ํ๋ฉด์ ์์์ ํฉ์ผ๋ก ๋ํ๋ผ ์ ์๋์ง ํ๋ณํ๋ค. b-a๊ฐ ๊ฐ์ฅ ํฐ ๊ฒ์ ์ถ๋ ฅํ๋ผ๊ณ ํ์ผ๋ฏ๋ก 2๋ถํฐ ํ์ํ๋ฉด์ ๊ฐ์ ์ฐพ์ผ๋ฉด ๋ฐ๋ก ์ข ๋ฃํ๋ฉด ๋๋ค. ๋ง์ฝ 10์ ์ฐพ๋๋ฐ 3+7, 5+5 ๋ ๊ฐ์ง ๊ฒฝ์ฐ๊ฐ ์๋ค๋ฉด 3+7์ด b-a๊ฐ ํฐ ๊ฐ์ด๋ค. b-a๊ฐ์ด ํฌ๋ ค๋ฉด ์์ ๊ฐ๋ถํฐ ํ๋ณํ๋ฉด ๋๋ค. ๋ ํ์ ์์์ ํฉ์ผ๋ก ๊ฐ์ ๋ํ๋ผ ์ ์๋ค๋ฉด ๊ฐ์ ์ถ๋ ฅํ๊ณ , ๋ํ๋ผ ์ ์๋ค๋ฉด "Goldbach's conjecture is wrong."์ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 1418_K-์ธ์ค์ (0) | 2024.04.26 |
---|---|
[Baekjoon] 24039_2021์ ๋ฌด์์ด ํน๋ณํ ๊น? (1) | 2024.04.25 |
[Baekjoon] 17103_๊ณจ๋๋ฐํ ํํฐ์ (0) | 2024.04.23 |
[Baekjoon] 2251_๋ฌผํต (0) | 2024.04.22 |
[Baekjoon] 1018_์ฒด์คํ ๋ค์ ์น ํ๊ธฐ (1) | 2024.04.19 |