https://school.programmers.co.kr/learn/courses/30/lessons/42839
from itertools import permutations
def chkPrime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
def solution(numbers):
nums = list(numbers)
p_nums = []
cnt = 0
for i in range(1, len(numbers)+1):
for p in permutations(nums, i):
p_nums.append(int(''.join(p)))
p_nums = list(set(p_nums))
for i in p_nums:
if chkPrime(i):
cnt += 1
return cnt
- 소수 판별할 수의 제곱근까지 구하면 된다.
- 입력받은 numbers를 list화를 해 nums의 길이의 자리수만큼 수를 만들 수 있으므로 1자리부터 len(numbers)자리까지 수를 만든다.
- 중복을 제거하기 위해 set() 함수를 사용한다.
- 소수판별 알고리즘으로 에라토스테네스의 체 를 알면 좋다!
'Algorithm > Problems' 카테고리의 다른 글
99클럽 코테 스터디 25일차 TIL + 완전탐색 (0) | 2024.11.22 |
---|---|
99클럽 코테 스터디 24일차 TIL + 완전탐색 (0) | 2024.11.21 |
99클럽 코테 스터디 22일차 TIL + 완전탐색 (0) | 2024.11.19 |
99클럽 코테 스터디 21일차 TIL + 완전탐색 (1) | 2024.11.17 |
99클럽 코테 스터디 20일차 TIL + 완전탐색 (0) | 2024.11.17 |