https://www.acmicpc.net/problem/1747
소스코드 :
import java.util.*;
class Main {
public boolean reverseOk(int n) {
String str = Integer.toString(n);
String reverseStr = new StringBuilder(str).reverse().toString();
if (str.equals(reverseStr)) return true;
else return false;
}
public int solution(int n) {
int answer = 0;
boolean[] arr = new boolean[1004001];
arr[1] = true;
for(int i=2; i*i<=1004000; i++) {
if (arr[i] == false) {
for(int j=i*i; j<=1004000; j+=i) {
arr[j] = true;
}
}
}
for(int i=0; i<arr.length; i++) {
if (i >= n) {
if (arr[i] == false && reverseOk(i) == true) {
answer = i;
break;
}
}
}
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
System.out.println(T.solution(n));
}
}
소수 판정은 에라토스테네스 체 알고리즘을 적용하였고,
팰린드롬은 StringBuilder 이용해 그냥 뒤집어서 똑같은지 확인하였다.
n의 범위가 백만까지라 배열을 어디까지 줘야할지 잘 몰라서 알아봤더니
1004000까지 하면 안전하다고 하길래 그렇게 배열을 생성했다.
정답률이 30%인 것 치고는 쉬운 문제였다.
'Java 코딩테스트 공부 > Java 백준 문제풀이' 카테고리의 다른 글
자바 백준 1644번 문제 - 소수의 연속합 (0) | 2022.08.11 |
---|---|
자바 백준 1806번 문제 - 부분합 (0) | 2022.08.02 |
백준 1032번 명령 프롬프트 / 자바 문자열 파트 (0) | 2022.07.13 |
백준 10808번 알파벳 개수 / 자바 문자열 파트 (0) | 2022.07.12 |
백준 String(문자열) 문제풀이 (0) | 2022.06.01 |