반응형
소수와 팰린드롬을 구하는 문제이다.
소수를 구할땐 크게 2가지 방법으로 구할 수 있다. 첫번째는 이수가 소수인지 그수의 루트N까지 직접 나누어 보는 방법이 있고, 두번째는 에라토스테네스의채를 사용하는 방법이 있다. 이 문제에서는 두가지 모두 구현하고 실제 코드에선 첫번째 방법을 사용하였다. 그리고 팰린드롬은 회문이라 한다. 즉, 거꾸로해도 같은 문자의 순서를 가지면 팰린드롬이라 한다. 예를 들면 123321 이나 75957 등이 있다. 단순히 비교하는 것이기에 처음과 끝에서 인덱스를 비교함으로 구하였다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
|
package boj3;
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Main_bj_1747_소수and팰린드롬 {
static boolean[] prime;
public static void main(String[] args) throws Exception {
BufferedReader br =new BufferedReader(new InputStreamReader(System.in));
int N=Integer.parseInt(br.readLine());
// prime=new boolean[2000001];
// for(int i=0;i<2000001;i++)
// prime[i]=true;
// prime[1]=false;
// findPrime();
int i=N;
while(true) {
if(isPalindrome(i) && isPrime(i)) {
System.out.println(i);
break;
}
i++;
}
}
// static void findPrime() {
// for(int i=2;i<=2000000;i++) {
// if(prime[i]==true) {
// for(int j=i+i;j<=2000000;j=j+i)
// prime[j]=false;
//
// }
//
// }
//
// }
static boolean isPrime(int N) {
if(N==1)
return false;
for(int i=2;i*i<=N;i++) {
if(N%i==0)
return false;
}
return true;
}
static boolean isPalindrome(int N) {
String str=String.valueOf(N);
int last=str.length()-1;
for(int i=0;i<=str.length()/2;i++,last--) {
if(str.charAt(i)!=str.charAt(last))
return false;
}
return true;
}
}
|
반응형
'Algorithm' 카테고리의 다른 글
[BOJ] 11727. 2xn 타일링2 (0) | 2020.07.03 |
---|---|
[BOJ] 1463. 1로 만들기 (0) | 2020.07.03 |
[BOJ] 17825. 주사위 윷놀이 (0) | 2020.06.06 |
[BOJ] 13460. 구슬 탈출 2 (0) | 2020.06.05 |
[BOJ] 1525. 퍼즐 (0) | 2020.06.04 |