관리 메뉴

Partially Committed

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ†Œμˆ˜μ°ΎκΈ° λ³Έλ¬Έ

πŸ”₯ Algorithm || λ¬Έμ œν’€μ΄/PS

[ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€] μ†Œμˆ˜μ°ΎκΈ°

WonderJay 2022. 7. 13. 09:49
728x90
λ°˜μ‘ν˜•
SMALL

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

 

ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€

μ½”λ“œ μ€‘μ‹¬μ˜ 개발자 μ±„μš©. μŠ€νƒ 기반의 ν¬μ§€μ…˜ 맀칭. ν”„λ‘œκ·Έλž˜λ¨ΈμŠ€μ˜ 개발자 λ§žμΆ€ν˜• ν”„λ‘œν•„μ„ λ“±λ‘ν•˜κ³ , λ‚˜μ™€ 기술 ꢁ합이 잘 λ§žλŠ” 기업듀을 맀칭 λ°›μœΌμ„Έμš”.

programmers.co.kr

 

숫자둜 이루어진 λ¬Έμžμ—΄ numbers κ°€ μ£Όμ–΄μ‘Œμ„ λ•Œ, 각각의 숫자둜 λ§Œλ“€ 수 μžˆλŠ” 수 μ€‘μ—μ„œ μ†Œμˆ˜μ˜ 개수λ₯Ό μ°Ύμ•„μ„œ λ°˜ν™˜ν•˜λ©΄ λœλ‹€. λ¬Έμžμ—΄ numbers 에 λ“±μž₯ν•˜λŠ” μˆ«μžλ“€λ‘œ λ§Œλ“€ 수 μžˆλŠ” λͺ¨λ“  숫자λ₯Ό λ§Œλ“€μ–΄μ„œ μ†Œμˆ˜μ˜ 개수λ₯Ό νŒλ‹¨ν•˜λ©΄ λœλ‹€. 이λ₯Ό μœ„ν•΄μ„œ next_permuation 을 μ΄μš©ν•˜μ—¬, 각각의 λ¬Έμžμ—΄μ˜ μˆ«μžλ“€λ‘œ λ§Œλ“€ 수 μžˆλŠ” λͺ¨λ“  μˆœμ—΄μ„ λ§Œλ“  λ‹€μŒ 각 자릿수λ₯Ό substr 을 μ΄μš©ν•΄μ„œ μž˜λΌμ€€ λ’€ μ†Œμˆ˜ νŒλ³„ ν•¨μˆ˜μ— λ„£κ³ , μ†Œμˆ˜κ°€ 맞으면 unordered_set 에 λ„£μ–΄μ€€λ‹€. 그러면 unordered_set μ—μ„œλŠ” μ†Œμˆ˜ μ›μ†Œλ§Œ 쀑볡없이 λ“€μ–΄κ°€κ²Œ λ˜λ―€λ‘œ, μ΅œμ’…μ μΈ λ‹΅μ•ˆ answer 은 unordered_set 의 크기가 λœλ‹€.

 

 

[C++]

#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
#include <unordered_set>
#include <math.h>


using namespace std;

bool isprime(int n){
    if(n == 0 || n == 1) return false;
    for(int i = 2 ; i <= sqrt(n); i ++)
    {
        if(n%i == 0)
            return false;
    }
    return true;
}

int solution(string numbers) {
    int answer = 0;
    unordered_set<int> st;
    sort(numbers.begin(), numbers.end());
    do{
        for(int i = 1 ; i <= numbers.size(); i ++)
        {
            int num = stoi(numbers.substr(0, i));;
            if(isprime(num) == true)
            {
                st.insert(num);
            }
        }
    }while(next_permutation(numbers.begin(), numbers.end()));
    
    answer = st.size();
    return answer;
}

 

728x90
λ°˜μ‘ν˜•
LIST
Comments