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

강주형·2022년 8월 20일
0

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

완전 탐색

from itertools import permutations

def solution(numbers):
    answer = 0
    perm = []
    for i in range(1, len(numbers)+1):
        perm += set(permutations(list(numbers), i))
        
    prime_number = set(map(int, (map(''.join, perm))))
    eratos = [False, False] + [True] * (max(prime_number)-1)
    
    for idx, val in enumerate(eratos):
        if val:
            for i in range(idx*2, max(prime_number)+1, idx):
                eratos[i] = False 
                
    for p in prime_number:
        if eratos[p]:
            answer += 1
            
    return answer               

permutations, set, 중첩 map, join, 에라토스테네스 체.. 엄청 다양하게 사용했다.


타인 코드

from itertools import permutations
def solution(n):
    a = set()
    for i in range(len(n)):
        a |= set(map(int, map("".join, permutations(list(n), i + 1))))
    a -= set(range(0, 2))
    for i in range(2, int(max(a) ** 0.5) + 1):
        a -= set(range(i * 2, max(a) + 1, i))
    return len(a)

내일 다시 보기

profile
Statistics & Data Science

0개의 댓글