본문 바로가기
Coding Test/Programmers

[Programmers] (완전탐색) Lv 2. 소수 찾기

by song.ift 2023. 7. 24.

https://school.programmers.co.kr/learn/courses/30/lessons/42839#

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

#include <string>
#include <vector>
#include <algorithm>
#include <set>
#include <cmath>
#include <numeric>

using namespace std;

// 순열
void permutation(string& numbers, set<int>& s, string str, int r) {
    if (!str.empty()) s.emplace(stoi(str));

    if (r == numbers.length()) return;
    
    for (size_t i = r; i < numbers.length(); ++i)
    {
        ::swap(numbers[i], numbers[r]);
        permutation(numbers, s, str + numbers[r], r + 1);
        ::swap(numbers[i], numbers[r]);
    }
}

// 소수 판별
bool isprime(int n)
{
    if (n <= 1) return false;

    for (int i = 2; i <= sqrtf(n); ++i)
        if (n % i == 0) return false;
    return true;
}

int solution(string numbers) {
    set<int> s;

    permutation(numbers, s, "", 0);
    return ::accumulate(s.begin(), s.end(), 0, [](const auto& acc, const auto& n) {
        return acc + (isprime(n) ? 1 : 0);
    });
}

GitHub : https://github.com/developeSHG/Algorithm-Baekjoon_Programmers/commit/db1389cf9c44661d960c7eb13a721dcb2fbcb17f

 

[level 2] Title: 소수 찾기, Time: 0.07 ms, Memory: 4.21 MB -BaekjoonHub · developeSHG/Algorithm-Baekjoon_Programmers@db1389

developeSHG committed Jul 24, 2023

github.com

 

댓글