반응형
SMALL
문제 정보
문제명 - 소수인팰린드롬
난이도 - 골드 V
문제 번호 - 1990번
문제 링크
문제
151은 소수이면서 동시에 팰린드롬이기 때문에 소수인 팰린드롬이다. 팰린드롬이란 앞으로 읽어나 뒤로 읽으나 같은 수를 말한다. 예를 들어 1234는 앞으로 읽으면 1234지만, 뒤로 읽으면 4321이 되고 이 두 수가 다르기 때문에 팰린드롬이 아니다.
두 정수 a, b가 주어졌을 때, a이상 b이하인 소수인 팰린드롬을 모두 구하는 프로그램을 작성하시오.
입력
입력은 첫째 줄에 공백으로 구분된 두 자연수 a, b가 주어진다. 단 5 ≤ a < b ≤ 100,000,000 이다.
출력
첫째 줄부터 차례로 증가하는 순서대로 한 줄에 한개씩 소수인 팰린드롬을 출력한다.
마지막 줄에는 -1을 출력한다.
예제 입력/출력
예제 입력 예제 출력 5 550 5
7
11
101
131
151
181
191
313
353
373
383
-1
알고리즘 분류
● 수학
● 정수론
● 소수 판정
● 에라토스테네스의 체
소스코드
package Lv3_Gold;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.StringTokenizer;
/**
* @author HanHoon
* @category 수학, 정수론, 소수 판정, 에라토스테네스의 체
* https://www.acmicpc.net/problem/1990
*/
public class BOJ_G5_1990_소수인팰린드롬 {
public static boolean isPalindrome(int num) {
String tmp = num + "";
for (int j = 0; j < tmp.length()/2; j++)
if(tmp.charAt(j) != tmp.charAt(tmp.length()-1-j))
return false;
return true;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
// 두 정수 A, B
int A = Integer.parseInt(st.nextToken());
int B = Integer.parseInt(st.nextToken());
boolean[] arr = new boolean[100000001];
ArrayList<Integer> list = new ArrayList<>();
arr[0] = true;
arr[1] = true;
for (int i = 2; i <= B; i++)
if(!arr[i]) {
if(i>=A) list.add(i);
for (int j = i+i; j <= B; j+=i)
arr[j] = true;
}
StringBuilder str = new StringBuilder();
for (Integer prime : list)
if(isPalindrome(prime))
str.append(prime).append("\n");
str.append(-1);
System.out.println(str);
br.close();
}
}
BaekJoon List
기회는 준비된 자에게 찾아온다.
반응형
LIST
'BaekJoon > Gold' 카테고리의 다른 글
[BOJ/JAVA] 백준 14719 : 빗물 (자바) (0) | 2023.01.25 |
---|---|
[BOJ/JAVA] 백준 2824 : 최대공약수 (자바) (0) | 2022.05.08 |
[BOJ/JAVA] 백준 2629 : 양팔저울 (자바) (0) | 2022.04.26 |
[BOJ/JAVA] 백준 3020 : 개똥벌레 (자바) (0) | 2022.04.16 |
[BOJ/JAVA] 백준 2493 : 탑 (자바) (0) | 2022.04.16 |
댓글