알고리즘/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일 때만 예외 처리를 해주면 쉽게 해결된다.

'알고리즘 > 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