DataScience trainee

Programmers - 소수 찾기

소수 찾기


개요

  • 이번 포스팅은 파이썬 코딩테스트 연습문제 풀이입니다.
  • Programmers 에 공개된 예제이며 링크는 아래와 같습니다.

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


코드

def combination(data, n):
    temp = []
    if n <= 1:
        return data
    for m in data:
        for i in combination(data.replace(m,'',1), n-1):
            a = m + i
            temp.append(a)
    return set(temp)

def solution(numbers):
    answer = 0
    dic = {}
    for i in range(1, len(numbers)+1):
        if i == 1:
            dic[i] = set(' '.join(numbers).split())
        else:
            dic[i] = combination(numbers, i)

    for key, values in dic.items():
        for value in values:
            if value[0] == '0':
                continue
            value = int(value)
            if value == 1 or value == 0:
                continue
            if value == 2:
                answer += 1
                continue
            prime = True
            for n in range(2, value):
                if value % n == 0:
                    prime = False
                    break
            if prime == True:
                answer += 1
    return answer

마치며

이번 포스팅은 Programmers에 존재하는 파이썬 코딩테스트 완전탐색 예제 중 레벨 2에 해당하는 문제입니다.