본문 바로가기

알고리즘/problem solving

[프로그래머스] level2 완전탐색 소수찾기

문제링크 : 코딩테스트 연습 - 소수 찾기 | 프로그래머스 (programmers.co.kr)

코딩테스트 연습 - 소수 찾기 프로그래머스 (programmers.co.kr)

풀이 방법

순열을 직접구현해서 풀려고 했으나 구현을 못해서 표준 라이브러리인 itertools를 사용해서 풀었다.

permutations  함수를 사용해 순열을 생성하고, 생성된 순열에 대해서만 소수 판별 알고리즘을 통해 소수 인지 판별해주는 문제이다.

 

나의 풀이

풀이 확인
from itertools import permutations

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

def solution(numbers):
    answer = []
    p = []
    for i in range(1, len(numbers)+1):
        temp = map(list, (permutations(numbers, i)))
        p.append([''.join(x) for x in temp])
    p = set([int(y) for x in p for y in x if int(y) > 1])
    
    for i in p:
        if is_prime_number(i):
            answer.append(i)

    return len(answer)