https://programmers.co.kr/learn/courses/30/lessons/42839
itertools의 permutations와 에라토스테네스의 체를 활용해서 문제를 풀었다.
나의 코드
from itertools import permutations
def solution(numbers):
def prime_list(n):
# 에라토스테네스의 체 초기화: n개 요소에 True 설정(소수로 간주)
sieve = [True] * n
m = int(n ** 0.5)
for i in range(2, m + 1):
if sieve[i] == True: # i가 소수인 경우
for j in range(i+i, n, i): # i이후 i의 배수들을 False 판정
sieve[j] = False
return [i for i in range(2, n) if sieve[i] == True]
answer = 0
prime_list = prime_list(int('9'*len(numbers)))
permu_set = set()
for i in range(1,len(numbers)+1):
permu = list(permutations(numbers,i))
for p in permu:
permu_set.add(int(''.join(p)))
for i in list(permu_set):
if i in prime_list: answer +=1
return answer
'Programming > Programmers' 카테고리의 다른 글
[프로그래머스] 베스트앨범 (Python) (0) | 2021.10.29 |
---|---|
[프로그래머스] 위장 (Python) (0) | 2021.10.29 |
[프로그래머스] H-Index (Python) (0) | 2021.10.29 |
[프로그래머스] 단속카메라 (Python) (0) | 2021.10.28 |
[프로그래머스] 섬 연결하기(Python) (0) | 2021.10.28 |
댓글