๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

์†Œ์ˆ˜ ํŒ๋ณ„ ๋ถ€๋ถ„์—์„œ int ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋‚  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, long long ์ž๋ฃŒํ˜•์œผ๋กœ ์ž‘์„ฑํ•˜์˜€์Šต๋‹ˆ๋‹ค. ์ € ๋ถ€๋ถ„ ๋•Œ๋ฌธ์— 20๋ถ„์€ ์†Œ๋ชจํ•œ ๋“ฏํ•ด์š”...

 

1. n์„ k์ง„์ˆ˜๋กœ ๋ฐ”๊พธ์–ด, ๋ฌธ์ž์—ด๋กœ ์ €์žฅํ•˜๊ธฐ

2. k์ง„์ˆ˜ ๋ฌธ์ž์—ด์—์„œ '0'์„ ๊ธฐ์ค€์œผ๋กœ ๋ฌธ์ž์—ด ๋ถ„๋ฆฌํ•˜๊ธฐ

3. ๊ฐ ๋ถ„๋ฆฌ๋œ ๋ฌธ์ž์—ด๋“ค์„ ์†Œ์ˆ˜ ๊ฒ€์‚ฌํ•˜๊ธฐ

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <vector>
#include <string>
#include <sstream>
#include <algorithm>
using namespace std;

string GetKNumber(int n, int k) {
    string number;

    while (true) {
        int quotient = n / k;
        int remainder = n % k;
        number.push_back(remainder + '0');
        
        if (quotient == 0)
            break;
        n = quotient;
    }

    reverse(number.begin(), number.end());
    return number;
}

bool IsPrimeNumber(long long n) {
    if (n == 1)
        return false;

    for (long long i = 2; i * i <= n; i++) {
        if (n % i == 0)
            return false;
    }
    return true;
}


int solution(int n, int k) {
    int answer = 0;
    string kNum = GetKNumber(n, k);
    stringstream tokenizer(kNum);
    string num;

    while (getline(tokenizer, num, '0')) {
        if (!num.empty())
            answer += IsPrimeNumber(stoll(num));
    }

    return answer;
}

 

 

 

728x90
๋ฐ˜์‘ํ˜•