그럴듯한 개발 블로그
반응형

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

 

프로그래머스

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

programmers.co.kr

visit, prime 배열 arr로 전역 초기화 안되고, size 작게 해줘서 터지는거 잡느라 스트레스 엄청 받았다... 다신 이러지 않을 것.

#include <string>
#include <vector>
#include <iostream>

using namespace std;
// bool    prime[1000000] = { true }; // 초기화가 안되잖아
// bool    visit[1000000] = { false };
// bool    visitIdx[8] = { false };
vector<bool>    prime(10000000,true);
vector<bool>    visit(10000000, false);
vector<bool>    visitIdx(8,false);
int nSize, res = 0;
string num;

void dfs(string s) {
    if (s != "") {
        int curNum = stoi(s);
        if (visit[curNum] == false) { // 아직 접근 안한값이면
            visit[curNum] = true;
            if (prime[curNum] == true) // 소수이면
                res++;
        }
    }
    for (int i = 0; i < nSize; i++) {
        if (visitIdx[i] == false) {
            visitIdx[i] = true;
            dfs(s + num[i]);
            visitIdx[i] = false;
        }
    }
}

int solution(string numbers) {
    nSize = numbers.size();
    num = numbers;

    prime[0] = false;
    prime[1] = false;
    for (int i = 2; i * i < 10000000; i++) // 에라토스테네스의 체
        if (prime[i])
            for (int j = i * i; j < 10000000; j += i)
                prime[j] = false;
    dfs("");
    return res;
}
반응형
profile

그럴듯한 개발 블로그

@donghyk2

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!