๐
2025-08-12
๋ฌธ์ ๋งํฌ
๋ฌธ์ ์ค๋ช
ํ์๋ฆฌ ์ซ์๊ฐ ์ ํ ์ข
์ด ์กฐ๊ฐ์ด ํฉ์ด์ ธ์์ต๋๋ค. ํฉ์ด์ง ์ข
์ด ์กฐ๊ฐ์ ๋ถ์ฌ ์์๋ฅผ ๋ช ๊ฐ ๋ง๋ค ์ ์๋์ง ์์๋ด๋ ค ํฉ๋๋ค.
๊ฐ ์ข ์ด ์กฐ๊ฐ์ ์ ํ ์ซ์๊ฐ ์ ํ ๋ฌธ์์ด numbers๊ฐ ์ฃผ์ด์ก์ ๋, ์ข ์ด ์กฐ๊ฐ์ผ๋ก ๋ง๋ค ์ ์๋ ์์๊ฐ ๋ช ๊ฐ์ธ์ง return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
์ ํ์ฌํญ
์์ ํ์ ๋ฐฉ์์ผ๋ก ํด๊ฒฐํ๋ค. ์กฐํฉํ ๋ฌธ์์ด ์ค ์์์ธ ๊ฒฝ์ฐ์๋ง int๋ก ๋ณํํ์ฌ ๋ฒกํฐ์ ๋ฃ๊ณ ์ค๋ณต์ ์์ ์ด ๊ฐ์๋ฅผ returnํ๋ค.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// ์์์ธ์ง ํ์ธํ๋ ํจ์
bool IsPrime(int num)
{
if (num<2) return false;
int i=2;
while(i*i<=num)
{
if(num%i==0) return false;
i++;
}
return true;
}
// ์ฐพ์ ์์๋ฅผ ๋ฒกํฐ์ ์ ์ฅํ๋ ํจ์
void findPrime(string& numbers, vector<bool> used, string num, vector<int>& primenums)
{
for(int i=0; i<numbers.size(); i++)
{
if(used[i]) continue;
num+=numbers[i];
used[i] = true;
if(IsPrime(stoi(num))) primenums.push_back(stoi(num));
findPrime(numbers, used, num, primenums);
used[i] = false;
num.pop_back();
}
}
int solution(string numbers) {
int answer = 0;
vector<bool> used(numbers.size(), false);
vector<int> primenums;
findPrime(numbers, used, "", primenums);
// ์ค๋ณต ์ ๊ฑฐ
sort(primenums.begin(), primenums.end());
primenums.erase(unique(primenums.begin(), primenums.end()),primenums.end());
answer = primenums.size();
return answer;
}
์๊ณ ๋ฆฌ์ฆ ํ๋ จ์ ๋ ๋ง์ด ํด์ผํ๋๋ฐ...
์ถ์ฒ ํ๋ก๊ทธ๋๋จธ์ค: ์์ ์ฐพ๊ธฐ