[프로그래머스] 완전탐색 - 소수 찾기(level 2)

imyo·2020년 9월 19일
0

알고리즘

목록 보기
12/39
post-thumbnail

소수 찾기


Python Code

def getNumbers(numbers,n):  #numbers 리스트에서 n개의 숫자를 정렬하여 만들 수 있는 숫자를 전부 구하는 함수(순열 변형)
    result = []

    if n == 1:
        for i in numbers:
            result.append(i)
    elif n > 1:
        for i in range(len(numbers)):
            temp = [i for i in numbers]
            temp.remove(numbers[i])
            for j in getNumbers(temp,n-1):  #첫번째 숫자를 뽑고 남은 숫자들로 다시 순열을 만듦
                result.append(numbers[i]*(10**(n-1))+j) #뽑은 숫자들을 자릿수를 맞춰 더하여 하나의 int를 만들고 result에 추가
    return result


def checkPrimeNumber(a):    #a가 소수인지 확인하는 함수
    if a < 2:
        return False
    for i in range(2,a):    #a를 2부터 a-1까지 나눴을 때 나눠 떨어지는 경우가 있는지 확인
        if a%i == 0:
            return False
    return True        


def solution(numbers):
    answer = 0
    list_int = list(map(int, list(numbers)))    #문자열인 numbers를 각각의 int로 이루어진 리스트로 만듦
    num = []
    for i in range(len(list_int)):  #한 자릿수부터 len(list_int) 자릿수까지 만들 수 있는 숫자를 모두 구함
        num += getNumbers(list_int, i+1)
    for i in list(set(num)):    #num의 중복을 제거(맨 앞에 0이 오는 경우)
        if checkPrimeNumber(i):
            answer += 1
    return answer
profile
(●⁰౪⁰●)

0개의 댓글

관련 채용 정보