
#include<iostream>
#include<vector>
using namespace std;
int main(){
ios_base :: sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long long n;
cin>>n;
long long start=n;
while(1){
vector<int> ans(100);
n=start;
if(n==1){
start++;
continue};
int ans_check=1;
int num_size=0;
while(n>=1){
ans[num_size]=n%10;
n/=10;
num_size++;
}
for(int i=0; i<num_size/2; i++){
if(ans[i]!=ans[num_size-1-i]){
ans_check=0;
break;
}
}
if(ans_check==1){
for(long long i=2; i*i<=start; i++){
if(start%i==0){
ans_check=0;
break;
}
}}
if(ans_check==1){
cout<<start;
break;}
start++;
}
}
n부터 증가시키며 팰린드롬 수인지 검사한 후, 옳은 경우에만 소수 검사를 하고 둘 모두 만족한 경우에 수를 출력하는 알고리즘.
*팰린드롬 수란?
거꾸로 읽었을 때에도 같은 수 ex) 101, 31413
이를 찾는 알고리즘은 숫자를 string의 형태로 저장한 후, 배열의 길이의 절반만큼 루프를 돌려 대칭적으로 이루어졌는지 확인하면 된다. 이때 인덱스 값이 옳은지 확인해야 한다.
'알고리즘' 카테고리의 다른 글
| Boj 3896 c++ 소수사이 수열 (0) | 2025.05.27 |
|---|---|
| Boj 1990 c++소수인 팰린드롬 (0) | 2025.05.26 |
| Boj 1920 c++ 수 찾기(해시연습) (0) | 2025.05.24 |
| Boj 32201 c++ 눈사람(해시) (0) | 2025.05.24 |
| Boj 1193 c++눈물의 노가다 (0) | 2025.05.23 |