코딩문제풀이/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;
    }
}

 

 

결과