Java 코딩테스트 공부/Java 백준 문제풀이
자바 백준 1990번 문제 : 소수인팰린드롬
daramG
2023. 1. 10. 20:51
제목 // 자바 백준 0번 문제 : 문제명
문제 출처 : https://www.acmicpc.net/problem/1990
1990번: 소수인팰린드롬
151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되
www.acmicpc.net
문제 :
풀이 :
에라토스테네스 체 이용해 소수 판별한 다음 팰린드롬인지 아닌지 판별해 출력한다.
소스코드 :
import java.util.*;
class Main {
public boolean plndr(int n) {
// 팰린드롬 판별 함수
String str = Integer.toString(n);
String reverseStr = new StringBuilder(str).reverse().toString();
if (str.equals(reverseStr)) return true;
else return false;
}
public StringBuilder solution(int a, int b) {
// 소수 찾기 : 에라토스테네스의 체
StringBuilder answer = new StringBuilder();
boolean[] prime = new boolean[b+1];
Arrays.fill(prime, true);
prime[0] = prime[1] = false;
for(int i=2; i*i<=b; i++) {
if (prime[i] == true) {
for(int j=i*i; j<=b; j+=i) prime[j] = false;
}
}
// 소수이면서 팰린드롬 StringBuilder에 저장
for(int i=a; i<prime.length; i++) {
if (prime[i]) {
if (plndr(i)) answer.append(i).append('\n');
}
}
answer.append("-1");
return answer;
}
public static void main(String[] args) {
Main T = new Main();
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
System.out.println(T.solution(a, b));
}
}