[프로그래머스] 완전탐색 - 소수 찾기(Python3)

kimgaeul02·2023년 2월 2일

프로그래머스

목록 보기
11/11

📄 소수 찾기

🔗 완전탐색 : 소수 찾기


📌 해석

permutations

순열이란 몇 개를 골라 순서를 고려해 나열한 경우의 수를 말한다. 즉, 서로 다른 n 개 중 r 개를 골라 순서를 정해 나열하는 가짓수이며 순열이라는 의미의 영어 ‘Permutation’의 첫 글자 P를 따서 nPr로 표시한다. 출처 : [네이버 지식백과] 순열 Permutation, 順列

import itertools

arr = ['A', 'B', 'C']
nPr = itertools.permutations(arr, 2)
print(list(nPr))

>>> [('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]

참고 블로그


💻 코드

from itertools import permutations

def is_prime_number(x) :
    if x < 2 :
        return False
    
    for i in range(2, x) :
        if x % i == 0 :
            return False
            
    return True

def solution(numbers):
    answer = 0
    nums = []
    
    for i in range(1, len(numbers)+1) :
        nums.append(list(set(map(''.join, permutations(numbers, i)))))
    per = list(set(map(int, set(sum(nums, [])))))
    
    for p in per :
        if is_prime_number(p) == True :
            answer += 1

    return answer

👨🏻‍💻 마무리

소수를 찾는 것보다 문자의 조합으로 만들 수 있는 숫자의 경우의 수를 찾는 것이 더 어려운 문제였다. 결국 경우의 수를 찾지 못해 검색하였다.

0개의 댓글