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

Chooooo·2023년 3월 3일
0
post-thumbnail

소수 찾기

level2-완전탐색-소수 찾기

import itertools
import math
def solution(numbers):
    data = numbers
    n = len(data)
    cnt = 0
    def make_num(temp): #아직 문자열
        res = 0
        for x in temp:
            res = res * 10 + int(x)
        return res
            
    
    def prime_num(x):
        if x == 0 or x == 1:
            return False
        for i in range(2,int(math.sqrt(x) + 1)):
            if x % i == 0:
                return False
        else:
            return True
    
    t = set()
    for i in range(1,n+1): #1~n개로 구성된 수 뽑아야지
        for temp in itertools.permutations(data, i):
            temp = list(temp)
            #해당 숫자가 소수인지 판별
            num = make_num(temp) #숫자로 변환한 후
            if num in t:
                continue
            t.add(num)
            if prime_num(num) == True:
                print(num)
                cnt +=1 
    return cnt

코멘트

해당 문제는 일단 길이가 짧으니 완전탐색으로 해도 충분하겠다고 생각.
그리고 순열로 모든 숫자 경우의 수를 생각하는 문제라고 판단.
모든 경우의 수를 돌려서 확인함.

profile
back-end, 지속 성장 가능한 개발자를 향하여

0개의 댓글