BOJ 1747번 소수&팰린드롬 ( 에라토스테네스의 체 & 스택 ) JAVA
풀이
에라토스테네스의 체를 이용하여, 먼저 소수를 구해준 다음
스택을 활용하여 펠린드롬을 검사해줍니다.
링크
https://www.acmicpc.net/problem/1747
소스 코드
package boj;
import java.util.Scanner;
import java.util.Stack;
public class Boj1747 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean[] prime = new boolean[2000001];
prime[1] = true;
// false->prime;
int n = sc.nextInt();
for (int i = 2; i * i < prime.length; i++) {
if (!prime[i]) {
for (int j = i * i; j < prime.length; j += i) {
prime[j] = true;
}
}
}
int res = 0;
for (int i = n ; ; i++) {
if (!prime[i] && isPal(i)) {
res = i;
break;
}
}
System.out.println(res);
}
public static boolean isPal(int n) {
char[] num = Integer.toString(n).toCharArray();
Stack<Character> st = new Stack<>();
for (int i = 0; i < num.length; i++) {
if (num.length % 2 == 1 && i == num.length / 2) {
continue;
}
if (i < num.length / 2) {
st.push(num[i]);
} else {
if (st.peek() == num[i]) {
st.pop();
}else{
return false;
}
}
}
return true;
}
}
'Algorithm' 카테고리의 다른 글
BOJ 2169번 로봇 조종하기 ( DP ) JAVA (0) | 2021.04.06 |
---|---|
BOJ 2098번 외판원 순회 ( DP ) JAVA (0) | 2021.04.05 |
BOJ 5557번 1학년 ( DP ) JAVA (0) | 2021.04.05 |
BOJ 1958번 LCS 3 ( DP ) JAVA (0) | 2021.04.04 |
BOJ 4948번 베르트랑 공준 ( 에라토스테네스의 체 ) JAVA (0) | 2021.04.04 |