https://www.acmicpc.net/problem/1747
1747번: 소수&팰린드롬
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,
www.acmicpc.net


소스코드 :
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 |
https://www.acmicpc.net/problem/1747
1747번: 소수&팰린드롬
어떤 수와 그 수의 숫자 순서를 뒤집은 수가 일치하는 수를 팰린드롬이라 부른다. 예를 들어 79,197과 324,423 등이 팰린드롬 수이다. 어떤 수 N (1 ≤ N ≤ 1,000,000)이 주어졌을 때, N보다 크거나 같고,
www.acmicpc.net


소스코드 :
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 |