k진수에서 소수 개수 구하기

원래벌레·2023년 1월 18일

🌞 문제

🌞 풀이

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

int solution(int n, int k) {
    int answer;
    int cnt = 0;
    string transform="";
    
    while(n > 0)
    {
        int remain;
        remain = n%k;
        n=n/k;
        transform+=to_string(remain);
    }
    
    reverse(begin(transform),end(transform));
    
    cout<<transform;
    
    string collect = "";
    
    for(int i=0;i<transform.size();i++)
    {
        if(transform[i] != '0')
        {
            collect += transform[i];
        }
        
        else
        {
            if(collect != "")
            {
                long long x = stoll(collect);
                int flag = 1;
                for(long long j=2; j*j<=x ; j++)
                {
                    if(x%j == 0)
                    {
                        flag = 0;
                        break;
                    }
                }
                if(flag==1 && x!=1)
                {
                    cnt++;
                }
                collect="";
            }      
        }
        
    
    }
    
    if(collect != "")
    {
        long long x = stoll(collect);
        int flag = 1;
        for(long long i=2; i*i<=x ; i++)
        {
            if(x%i== 0)
            {
                flag = 0;
                break;
            }
        }
        if(flag==1 && x!=1)
        {
            cnt++;
        }
        collect="";
    }
    
    answer = cnt;
    
    return answer;
}

🌞느낀점

문제는 어렵지 않았다. 하지만 문제를 풀어가는 과정에서 문제를 제대로 보지 않고 정답이 0인 경우 -1을 출력하게 하여 5개 정도의 테스트 케이스를 계속 실패했다.

문제를 잘 보는 습관을 길러야 겠다는 생각이 들었다.

그리고 long long 형은 길이가 긴 int형이라는 것을 알 수 있었다. 이걸 기억해야 하는 이유는 double형은 나머지 연산이 안된다. 그렇기에 길이가 긴 int형을 다루는 경우 long long형을 사용하게 되면 나머지 연산을 할 수 있다.

profile
학습한 내용을 담은 블로그 입니다.

0개의 댓글