문제 원본 : 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일 때만 예외 처리를 해주면 쉽게 해결된다.
'알고리즘 > BOJ' 카테고리의 다른 글
| [BOJ] 15486. 퇴사 2 (0) | 2022.04.27 |
|---|---|
| [BOJ] 5397. 키로거 (0) | 2022.04.24 |
| [BOJ] 2075. N번째 큰 수 (0) | 2022.04.23 |
| [BOJ] 5052. 전화번호 목록 (0) | 2022.04.22 |
| [BOJ] 9935. 문자열 폭발 (0) | 2022.04.21 |