알고리즘/프로그래머스

[파이썬] 프로그래머스_소수 찾기

딱따구르리 2022. 4. 1. 18:05
728x90
반응형

문제

 

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

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr


 

해설

 

순열 함수를 사용해 본 적이 없어서 푸는데 시간이 오래 걸렸다..

우선 permutations(순열) 함수로 입력값 numbers에서 나올 수 있는 모든 경우의 수를 알아낸 후,

join 함수로 각각을 합쳐서 만든 수를 리스트에 넣어주면 된다.

 

그 다음 각각의 값이 소수인지 체크해주면 끝난다. 

 


코드

 

-파이썬

#프로그래머스 42839(소수 찾기)

from itertools import permutations

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

def solution(numbers):
    answer = 0
    per = []
    per_num = []
    #문자열로 만들 수 있는 모든 숫자 알아내기
    for i in range(1, len(numbers)+1):
        per += list(permutations(numbers, i))
        #순열 조합 합치기
        per_num = [int(''.join(i)) for i in per]

    #소수 개수 체크하기
    for i in set(per_num):
        if isPrime(i):
            answer += 1

    return answer

print(solution("17"))
728x90
반응형