알고리즘/BOJ
[BOJ] 1747. 소수&팰린드롬
재담
2022. 4. 26. 00:22
문제 원본 : https://www.acmicpc.net/problem/1747
1747번: 소수&팰린드롬
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,
www.acmicpc.net
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
int start, ans;
if (n % 2 == 0) {
start = n + 1;
} else {
start = n;
}
for (int i = start; ; i += 2) {
if (isPrime(i) && isPalindrome(String.valueOf(i))) {
ans = i;
break;
}
}
if (n <= 2) {
ans = 2;
}
bw.write(String.valueOf(ans));
bw.close();
br.close();
}
public 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;
}
public static boolean isPalindrome(String s) {
int i = 0, j = s.length() - 1;
while (i < j) {
if (s.charAt(i) != s.charAt(j)) {
return false;
}
++i;
--j;
}
return true;
}
}
- 소수 판정 및 팰린드롬 판정 문제
- 소수는 제곱근까지만 체크하면 되고, 팰린드롬은 문자열로 치환해서 판별하였다.
- 2일 때만 예외 처리를 해주면 쉽게 해결된다.