https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=python3
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
[itertools 풀이]
import math
from itertools import permutations
def solution(numbers):
# 소수 판별 함수
def isPrime(number):
if number < 2: # 0과 1은 소수가 아님
return False
for i in range(2, int(math.sqrt(number)) + 1):
if number % i == 0:
return False
return True
# 모든 숫자 조합 생성
unique_numbers = set()
for i in range(1, len(numbers) + 1): # 길이가 1 이상인 조합만 생성
for item in permutations(numbers, i):
num = int(''.join(item))
unique_numbers.add(num)
# 소수 개수 세기
return sum(1 for num in unique_numbers if isPrime(num))
[재귀 풀이]
primeSet = set()
def isPrime(number):
if number in (0, 1):
return False
for i in range(2, number):
if number % i == 0:
return False
return True
def makeCombinations(str1, str2):
if str1 != "":
if isPrime(int(str1)):
primeSet.add(int(str1))
for i in range(len(str2)):
makeCombinations(str1 + str2[i], str2[:i] + str2[i + 1:])
def solution(numbers):
makeCombinations("", numbers)
answer = len(primeSet)
return answer
'프로그래머스' 카테고리의 다른 글
프로그래머스 43165. 타겟 넘버 (0) | 2025.01.15 |
---|---|
프로그래머스 84512. 모음사전 (0) | 2025.01.15 |
프로그래머스 42579. 베스트앨범 (0) | 2025.01.14 |
프로그래머스 42578. 의상 (0) | 2025.01.09 |
프로그래머스 42577. 전화번호 목록 (0) | 2025.01.09 |