[프로그래머스] 소수 찾기 - itertools permutations

zunzero·2022년 9월 29일
0

알고리즘(파이썬)

목록 보기
49/54

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

문제는 위와 같고, 아이디어가 어렵다기 보다는 각각의 찢어진 종이 조각으로 만들 수 있는 숫자를 만드는 과정에서 구현이 까다로웠다.

from itertools import permutations

def checkPrime(n):
    if n < 2:                                 
        return False
            
    for i in range(2, int(n**0.5)+1):
        if n % i == 0:
            return False
    
    return True
                   
def solution(numbers):
    answer = []
    numbers = list(numbers)
    temp = []
    
    for i in range(1, len(numbers)+1):
        print(list(permutations(numbers, i)))
        temp += list(permutations(numbers, i)) 
    print(temp)
    num = [int(''.join(t)) for t in temp] 
    print(num)
    
    for i in num:
        if checkPrime(i):
            answer.append(i)
    
    return len(set(answer))

num 배열이 만들어지는 과정을 주목해서 살펴두자.

profile
나만 읽을 수 있는 블로그

0개의 댓글