군대에서_코딩하기_알고리즘_6
오늘 문제는 자연수 N을 받아서, 뒤집은 다음에 소수인지 판별하는 문제였다. 근데 만약 N을 뒤집었을 때 0이 앞에 오면, 그 0은 제외하고 숫자 조합.
예를 들어 5400이면 뒤집었을 때 0045니까, 45로 판별해서 딱 소수들만 출력하기였다.
어려운 문제는 아니었지만, 그래도 런타임을 생각해서, 자연수 N을 받았을 때, 일일히 1부터 N까지 다 돌면서 나머지가 0임을 확인하는것보다, N의 제곱근을 구해서 1부터 N의 제곱근까지 for문을 돌려줬다.
우선 코드는 아래와 같다.
#include<iostream>
#include<cmath>
using namespace std;
int reverse(int orgin_num){
int num = orgin_num;
int sum=0, size=0,cnt=0 ;
while(num>0){
num = num/10;
size++;
}
while(orgin_num>0){
if(cnt==0 && orgin_num%10==0){
size--;
orgin_num = orgin_num / 10;
continue;
}
else if(cnt==0 && orgin_num%10!=0){
cnt++;
sum = sum + (orgin_num%10)*pow(10, size-1);
size--;
orgin_num = orgin_num / 10;
}
else if(cnt==1){
sum = sum + (orgin_num%10)*pow(10, size-1);
size--;
orgin_num = orgin_num / 10;
}
}
return sum;
}
bool isPrime(int x){
int x_sqrt = (int)sqrt(x);
int check=0;
for(int i=2; i< x_sqrt; i++){
if(x%i==0){
check++;
break;
}
}
if(check==1){
}
else{
cout<<x<<" ";
}
}
int main(){
int N,i, num, res;
cin>>N;
for(i=0; i<N; i++){
cin>>num;
res = reverse(num);
if(res==1){
continue;
}
else{ isPrime(res);}
}
//cout<<(int)sqrt(N);
//cout<<reverse(N);
}
살짝,,아니 많이 아쉬운 부분은, reverse 함수 부분인데,
int reverse(int orgin_num){
int num = orgin_num;
int sum=0, size=0,cnt=0 ;
while(num>0){
num = num/10;
size++;
}
while(orgin_num>0){
if(cnt==0 && orgin_num%10==0){
size--;
orgin_num = orgin_num / 10;
continue;
}
else if(cnt==0 && orgin_num%10!=0){
cnt++;
sum = sum + (orgin_num%10)*pow(10, size-1);
size--;
orgin_num = orgin_num / 10;
}
else if(cnt==1){
sum = sum + (orgin_num%10)*pow(10, size-1);
size--;
orgin_num = orgin_num / 10;
}
}
너무 복잡하게 생각했다. 저번부터, 같은 메카니즘으로 더 쉽고 간단명료한 코드를 분명 배웠는데, 계속 같은 실수를 반복한다..
int reverse(int x){
int res=0, tmp;
while(x>0){
tmp=x%10;
res=res*10+tmp;
x=x/10;
}
return res;
}
이런식으로하면 끝날것을.. 이상한 int형 변수를 선언해서 끝에가 0인지 확인을 하고,, 그리고 자연수 N의 사이즈를 재주는.. 이상한 방식을 택했다.. 특히 res=res*10+tmp; 이부분은 예전에도 꼭 숙지해야겠다고 생각한 부분이었는데,, 다음번에는 반드시..
Author And Source
이 문제에 관하여(군대에서_코딩하기_알고리즘_6), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@shintaewon/군대에서코딩하기알고리즘6저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)