[프로그래머스] 소수 찾기 (level2) / c++

박정민·2022년 1월 26일
0

Programmers

목록 보기
1/1

문제

프로그래머스 소수 찾기

코드

#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int sosu(int n) 
{
    int sum=0; 
    for(int i=2;i<=n;i++)
    { if(n%i==0) sum++; }
    return sum; 
}
int solution(string numbers) {
    int answer = 0;
    sort(numbers.begin(),numbers.end());
    vector<int> v;
  do
  {
      for(int i=1;i<=numbers.size();i++)
      {
            int n= stoi(numbers.substr(0,i));
            if(sosu(n)==1)
            {   int count=0;
                for(int i=0;i<v.size();i++)
                {
                    if(n==v[i])
                        count++;
                }
                if(count==0)
                {
                    v.push_back(n);
                    answer++;
                }
            }
      }
  } while(next_permutation(numbers.begin(),numbers.end()));
    return answer;
}

풀이

문제를 보자마자 순열함수를 써야겠다 생각했었고, 순열함수를 통해 1개부터 n개까지 의 수를 모두 소수인지 확인해주었고 벡터에 넣기전에 중복을 검사해 주었다.

테케에서 몇개가 오류가 났었는데 sort를 해주니까 통과됐다.

profile
Developer

0개의 댓글