문제

✏️ https://www.acmicpc.net/problem/1747

해설

팰린드롬 찾는 방법(숫자)
1. 숫자를 문자열로 바꾼다.
2. 문자열을 char형으로 바꾼다.
3. 문자열 길이를 저장한다.
4. for문에 문자열 길이 절반까지 반복한다.
5. if문을 통해 char형 의 앞글자 뒷글자를 비교하고 틀리면 바로 false를 반환한다.
6. 조건이 다 통과하면 true를 반환한다.

public static boolean check(int value){
        String str = Integer.toString(value); // 숫자를 문자열로 바꾼다.
        char[] array = str.toCharArray(); // 문자열을 char형으로 바꾼다.
        int cnt = str.length(); // 문자열의 길이를 저장한다.

        for(int i =0; i < cnt/2; i++){ //문자열 길이 절반까지만 반복한다.
            if(array[i] != array[cnt-i-1]) return false; // 앞글자랑 뒷글자씩 비교하면서 틀리면 바로 false를 반환한다.

        }
        return true; // 조건을 다 통과하면 true를 반환한다.
    }

코드

import java.io.*;
import java.util.*;

public class J1747 {
    public static void main(String[] args) throws IOException {
        BufferedReader buffer = new BufferedReader(new InputStreamReader(System.in));
        int key = Integer.parseInt(buffer.readLine());

        int[] array = new int[1_100_000+1];

        for(int i = 0; i<=1100000 ; i++){
            array[i] = i;
        }
        array[1]=0;

        for(int i=2; i<Math.sqrt(1100000); i++){
            if(array[i] == 0) continue;
            for(int j=i+i; j<=1100000; j=j+i){
                array[j] = 0;
            }
        }

        for(int i = key; i<= 1100000; i++){
            if(array[i] != 0 && check(array[i])) {
                System.out.println(array[i]);
                break;
            }
        }
    }

    public static boolean check(int value){
        String str = Integer.toString(value);
        char[] array = str.toCharArray();
        int cnt = str.length();

        for(int i =0; i < cnt/2; i++){
            if(array[i] != array[cnt-i-1]) return false;

        }
        return true;
    }
}
profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글