1747번: 소수&팰린드롬
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,
www.acmicpc.net
0. 팰린드롬 수인지 판단하기 : 앞/뒤 양쪽에서 동시에 출발해, 한칸씩 이동하며 수가 같은지 비교
- 거의 O(1)에 가까운 복잡도를 가진다
1. 에라토스테네스의 체를 이용해 소수를 판별하면서, 소수에 대해서만 팰린드롬 여부를 판단한다
2. 입력 값 이상의 소수&팰린드롬이 발견되면 소수 판별을 종료하고, 출력한다
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class Main {
public static void main(String[] args)throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = pint(br.readLine());
int range=2000000;
int ans=0;
boolean[] notPrime = new boolean[range];
for (int i = 2; i < range; i++) {
if(!notPrime[i]) {
for (int j = i; j < range; j+=i) {
notPrime[j]=true;
}
if(isPalin(i)) {
if(i>=N) {
ans=i;
break;
}
}
}
}
System.out.println(ans);
}
static boolean isPalin(int n) {
String str = Integer.toString(n);
int s = 0, e = str.length()-1;
while(s<=e) {
if(str.charAt(s++)!=str.charAt(e--)) {
return false;
}
}
return true;
}
static int pint(String s) {
return Integer.parseInt(s);
}
}
'알고리즘 문제 풀이 > BOJ 골드' 카테고리의 다른 글
[백준] 2212 - 센서 (0) | 2021.06.24 |
---|---|
[백준] 16120 - PPAP (0) | 2021.06.24 |
[백준] 13904 - 과제 (0) | 2021.06.24 |
[백준] 1342 - 행운의 문자열 (0) | 2021.06.18 |
[백준] 9081 - 단어 맞추기 (0) | 2021.06.18 |
[백준] 16234 - 인구 이동 (0) | 2021.06.15 |
[백준] 14503 - 로봇 청소기 (0) | 2021.06.15 |