반응형
SMALL
문제 정보
문제명 - 소수&팰린드롬
난이도 - 실버 I
문제 번호 - 1747번
문제 링크
문제
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다.
어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고, 소수이면서 팰린드롬인 수 중에서, 가장 작은 수를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 N이 주어진다.
출력
첫째 줄에 조건을 만족하는 수를 출력한다.
예제 입력/출력예제 출력
예제 입력 예제 출력 31 101
알고리즘 분류
● 수학
● 브루트포스 알고리즘
● 정수론
● 소수 판정
● 에라토스테네스의 체
소스코드
package Lv2_Silver;
import java.util.Arrays;
import java.util.Scanner;
/**
* @author HanHoon
* @category 수학, 브루트포스 알고리즘, 정수론, 소수 판정, 에라토스테네스의 체
* https://www.acmicpc.net/problem/1747
*/
public class BOJ_S1_1747_소수와_팰린드롬 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
// 배열을 선언하고 모든 값을 true라고 한다.
boolean[] arr = new boolean[1005000];
Arrays.fill(arr, true);
// 0과 1은 소수가 아니다
arr[0] = false;
arr[1] = false;
// 2부터 시작
for (int i = 2; i < arr.length; i++) {
// treu라면 이 값은 소수가 아니므로 확인할 필요가 없다.
if(!arr[i]) continue;
// 이 값의 배수는 모두 소수가 아니다.
for (int j = i+i; j < arr.length; j += i) {
arr[j] = false;
}
}
// N보다 큰 첫번째 소수
for (int i = N; i < arr.length; i++) {
if(arr[i]) {
// 그중에서 펠린드롬인 수를 출력
String tmp = i+"";
boolean flag = true;
for (int j = 0; j < tmp.length()/2; j++)
if(tmp.charAt(j) != tmp.charAt(tmp.length()-1-j))
flag = false;
if(flag) {
System.out.println(i);
break;
}
}
}
sc.close();
}
}
BaekJoon List
기회는 준비된 자에게 찾아온다.
반응형
LIST
'BaekJoon > Silver' 카테고리의 다른 글
[BOJ/JAVA] 백준 1929 : 소수 구하기 (자바) (0) | 2022.05.04 |
---|---|
[BOJ/JAVA] 백준 1850 : 최대공약수 (자바) (0) | 2022.05.04 |
[BOJ/JAVA] 백준 1312 : 소수(자바) (0) | 2022.04.29 |
[BOJ/JAVA] 백준 1755 : 숫자놀이 (자바) (0) | 2022.04.25 |
[BOJ/JAVA] 백준 1316 : 그룹 단어 체커 (자바) (0) | 2022.04.22 |
댓글