[프로그래머스/Python] 소수 찾기

류성훈·2022년 6월 27일
0

코딩테스트

목록 보기
2/29

https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3

순열을 이용하여 완전탐색을 하는 문제이다.

해야할 것

  • 소수판별 함수 (is_prime)
  • 문자열을 조합하여 숫자로 만들기
from itertools import permutations

def is_prime(n):
    if n <= 1:
        return False
    
    for i in range(2,int(n**(1/2))+1):
        if n%i==0:
            return False
        
    return True

def solution(numbers):
    answer = set()
    
    numbers = list(i for i in numbers)
    
    for i in range(1,len(numbers)+1):
        arr = list(map(''.join,permutations(numbers,i)))
        for j in arr:
            if is_prime(int(j)):
                answer.add(int(j))
                    
    return len(answer)
  1. is_prime으로 소수를 판별해줍니다.
    에라토스테네스의 정리에 따르면 어떤 수의 제곱근까지 나누어지지 않는 수는 소수입니다.
  2. 순열(permutations)를 이용하여 경우의 수를 만듭니다.
  3. 집합(set)으로 중복된 원소들을 처리하고 나면
  4. answer에 만들어진 소수의 집합이 저장되므로, 그 길이를 리턴하면 끝!
profile
(전)Backend Developer / (현)Data Engineer

0개의 댓글