728x90
반응형
문제
https://programmers.co.kr/learn/courses/30/lessons/42839
해설
순열 함수를 사용해 본 적이 없어서 푸는데 시간이 오래 걸렸다..
우선 permutations(순열) 함수로 입력값 numbers에서 나올 수 있는 모든 경우의 수를 알아낸 후,
join 함수로 각각을 합쳐서 만든 수를 리스트에 넣어주면 된다.
그 다음 각각의 값이 소수인지 체크해주면 끝난다.
코드
-파이썬
#프로그래머스 42839(소수 찾기)
from itertools import permutations
def isPrime(n):
if n < 2:
return False
for i in range(2, n//2+1):
if n%i == 0:
return False
return True
def solution(numbers):
answer = 0
per = []
per_num = []
#문자열로 만들 수 있는 모든 숫자 알아내기
for i in range(1, len(numbers)+1):
per += list(permutations(numbers, i))
#순열 조합 합치기
per_num = [int(''.join(i)) for i in per]
#소수 개수 체크하기
for i in set(per_num):
if isPrime(i):
answer += 1
return answer
print(solution("17"))
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[파이썬] 프로그래머스_주식가격 (0) | 2022.04.05 |
---|---|
[파이썬] 프로그래머스_카펫 (0) | 2022.04.02 |
[파이썬] 프로그래머스_최소직사각형 (0) | 2022.02.23 |
[파이썬] 프로그래머스_예산 (0) | 2022.02.16 |
[파이썬] 프로그래머스_완주하지 못한 선수(해시) (0) | 2022.02.10 |