코딩문제풀이/Baekjoon
[Java] 백준 1747번 : 소수&팰린드롬
코딩하는 포메라니안
2022. 12. 28. 16:21
1. 문제
https://www.acmicpc.net/problem/1747
1747번: 소수&팰린드롬
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,
www.acmicpc.net
2. 풀이 과정
1. 에라토스테네스의 체를 이용하여 소수를 구한다.2. 소수인 경우에 팰린드롬인지 확인하는데, 숫자를 문자열로 바꿔서 대칭인지 확인하도록 하였다.
import java.util.Scanner;
public class Main {
static int N;
static final int MAX = 1_004_000;
static boolean[] isPrime;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt();
isPrime = new boolean[MAX+1];
isPrime[1] = true;
prime();
}
public static void prime() {
for(int i = 2; i <= MAX ; i++) {
if(isPrime[i]){continue;}
if(i>=N && solve(i)){
System.out.println(i);
return;
}
for(int j=i+i; j <= MAX; j+=i){
isPrime[j] = true;
}
}
}
public static boolean solve(int num) {
if(num < 10) {
return true;
}
String str = String.valueOf(num);
for(int i = 0; i < str.length() / 2; i++) {
if(str.charAt(i) != str.charAt(str.length() -1 - i)) {
return false;
}
}
return true;
}
}