[BOJ] 9020 ๊ณจ๋๋ฐํ์ ์ถ์ธก
https://www.acmicpc.net/problem/9020
๋ฌธ์ ์ ๊ทผ
์ง์ n์ ๊ฐ์ฅ ์ฐจ์ด๊ฐ ์์ ๋ ์์์ ํฉ์ผ๋ก ๋ํ๋ด๋ ๋ฌธ์ ์ด๋ค. ์ฒ์์๋ n๊น์ง ์์๋ฅผ ๊ตฌํ๊ณ ๊ทธ ์์ค์์ ํฉ์ ์ํ ๋ ค๊ณ ํ๋๋ฐ, ์ฝ๋๊ฐ ๋๋ฌด ๋ณต์กํด์ง๊ณ ๋ด๊ฐ ์ผ๋๋ฐ๋ ๋ด๊ฐ ๋ชป์์๋ณด๋ ์ง๊ฒฝ์ด์๋ค... ๊ทธ๋ฆฌ๊ณ ๊ฒฐ๊ตญ์ ๋งํ๋ค
๊ทธ๋์ ์๋ผํ ์คํ
๋ค์ค์ ์ฒด๋ฅผ ์ด์ฉํด์ 10000๊น์ง์ ์์๋ฅผ ๋ชจ๋ ๊ตฌํ๋ค. ๊ทธ ๋ค์์ ๊ฐ์ฅ ์ฐจ์ด๊ฐ ์์ ๋ ์์์ ํฉ์ ๊ตฌํ๊ธฐ ์ํด์ num1์ n/2๋ถํฐ 1์ฉ ๊ฐ์ํ๊ณ num2๋ n- num1์ผ๋ก ํด์ num1,num2 ๋ชจ๋ ์์์ธ ์ฒซ๋ฒ์งธ ๊ฒฝ์ฐ๊ฐ ๋ต์ด์๋ค.
์์ฝํ์๋ฉด ์๋์ ๊ฐ๋ค.
1.์๋ผํ ์ค๋ค์ค์ ์ฒด๋ก 10000๊น์ง ์์๋ฅผ ๋ชจ๋ ๊ตฌํ๋ค.
2.1์ ๊ฒฐ๊ณผ๋ฅผ ๋ฐํ์ผ๋ก n/2๋ถํฐ 1์ฉ ์ค์ฌ๊ฐ๋ฉด์ num1, num2 ๋ชจ๋ ์์์ธ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋๋ค.
Code
import java.util.Scanner;
public class BOJ9020 {
static boolean[] isNotPrime = new boolean[10001];
static int n;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt();
findPrime();
while(T-- != 0){
n = sc.nextInt();
findAnswer(n);
}
}
/**
* ์๋ผํ ์คํ
๋ค์ค์ ์ฒด๋ฅผ ์ด์ฉํด 10000๊น์ง ์์๋ฅผ ๊ตฌํด isNotPrime์ ์ ์ฅํ๋ค.
* isNotPrime == true -> ์์ ์๋
* isNotPrime == false -> ์์
* */
public static void findPrime(){
for(int i = 2; i< isNotPrime.length; i++) {
if(isNotPrime[i]) continue;
for (int j = 2 * i; j < isNotPrime.length; j += i) {
isNotPrime[j] = true;
}
}
}
/**
* n/2๋ถํฐ 1์ฉ ๊ฐ์์ํค๋ฉด์
* num1,num2 ๋ชจ๋ ์์์ธ ๊ฒฝ์ฐ๋ฅผ ์ฐพ์์ ์ถ๋ ฅํ๋ค.
*/
public static void findAnswer(int n){
for(int num1 = n/2; num1 > 0; num1--){
int num2 = n - num1;
if(!isNotPrime[num1] && !isNotPrime[num2]){
System.out.println(num1+" "+num2);
break;
}
}
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์ / ๋๋ ์
boolean์ ์ ์ญ๋ณ์๋ก ์ ์ธํด์ ์ด๊ธฐํํ๋ฉด ๊ธฐ๋ณธ๊ฐ์ด false์ฌ์ ์ฒ์์๋ boolean isPrime์ ์ ์ธํ๋ค๊ฐ boolean isNotPrime์ผ๋ก ๋ฐ๊ฟจ๋ค.
์ ์ญ๋ณ์๋ก ์ด๊ธฐํํ์ ๋ ๊ธฐ๋ณธ๊ฐ์ ์ค์ํ์ง ์๋ค๊ณ ์๊ฐํ๋๋ฐ, findPrime์ด ์ ๋๋ก ์๋ํ์ง ์์์ ๋ฌธ์ ๋ฅผ ์ฐพ๋๋ฐ ์ข ๊ฑธ๋ ธ๋ค.(์๋ผํ ์คํ
๋ค์ค๊ฐ ์๋ชป๋ ์ค ์์๋ค....)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][๋ฐฑ์ค] 11729 ํ๋ ธ์ด ํ ์ด๋ ์์ (0) | 2022.04.01 |
---|---|
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ (0) | 2022.03.27 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ ๋ฐ๋จน๊ธฐ (0) | 2022.03.24 |
[Algorithm/Java][๋ฐฑ์ค] 6603 ๋ก๋ (0) | 2022.03.21 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฆฐํฐ (0) | 2022.03.05 |