[TIL] 250812

๊น€์„ธํฌยท2025๋…„ 8์›” 12์ผ

โœ๏ธToday I Learned

๐Ÿ“… 2025-08-12

  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์†Œ์ˆ˜ ์ฐพ๊ธฐ
  • ํŒ€ํ”Œ - ์ค‘๊ฐ„ ๋ณด์Šค, Swarm ๋ชฌ์Šคํ„ฐ ๋งŒ๋“ค๊ธฐ. ๊ณต๊ฒฉ ์–ด๋นŒ๋ฆฌํ‹ฐ ๋งŒ๋“ค๊ธฐ

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์†Œ์ˆ˜ ์ฐพ๊ธฐ

๋ฌธ์ œ ๋งํฌ
๋ฌธ์ œ ์„ค๋ช…
ํ•œ์ž๋ฆฌ ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ์Šต๋‹ˆ๋‹ค. ํฉ์–ด์ง„ ์ข…์ด ์กฐ๊ฐ์„ ๋ถ™์—ฌ ์†Œ์ˆ˜๋ฅผ ๋ช‡ ๊ฐœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š”์ง€ ์•Œ์•„๋‚ด๋ ค ํ•ฉ๋‹ˆ๋‹ค.

๊ฐ ์ข…์ด ์กฐ๊ฐ์— ์ ํžŒ ์ˆซ์ž๊ฐ€ ์ ํžŒ ๋ฌธ์ž์—ด numbers๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ข…์ด ์กฐ๊ฐ์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ์†Œ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐœ์ธ์ง€ return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด์ฃผ์„ธ์š”.

์ œํ•œ์‚ฌํ•ญ

  • numbers๋Š” ๊ธธ์ด 1 ์ด์ƒ 7 ์ดํ•˜์ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
  • numbers๋Š” 0~9๊นŒ์ง€ ์ˆซ์ž๋งŒ์œผ๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.
  • "013"์€ 0, 1, 3 ์ˆซ์ž๊ฐ€ ์ ํžŒ ์ข…์ด ์กฐ๊ฐ์ด ํฉ์–ด์ ธ์žˆ๋‹ค๋Š” ์˜๋ฏธ์ž…๋‹ˆ๋‹ค.

ํ’€์ด

์™„์ „ ํƒ์ƒ‰ ๋ฐฉ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค. ์กฐํ•ฉํ•œ ๋ฌธ์ž์—ด ์ค‘ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ์—๋งŒ 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;
}

๐Ÿ’ก ๋А๋‚€ ์  (What I Felt)

์•Œ๊ณ ๋ฆฌ์ฆ˜ ํ›ˆ๋ จ์„ ๋” ๋งŽ์ด ํ•ด์•ผํ•˜๋Š”๋ฐ...


์ถœ์ฒ˜ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค: ์†Œ์ˆ˜ ์ฐพ๊ธฐ

0๊ฐœ์˜ ๋Œ“๊ธ€