- 한개~전체 고르는것 까지 모두 permutation으로 경우의 수 계산
- 이후 겹치는 경우들도 있으므로 방문한 케이스들을 visited에 저장 및 재방문 시 생략
- 소수 구할때는 2~n의 제곱근까지만 검사하여 시간 단축
from itertools import permutations
import math
def check_prime(n):
if n <= 1:
return False
elif n == 2:
return True
for i in range(2, int(math.sqrt(n))+1):
if n % i == 0:
return False
return True
def solution(numbers):
answer = 0
visited = set()
for i in range(1, len(numbers)+1):
allcase = list(permutations(numbers, i))
for case in allcase:
temp = int("".join(case))
if temp not in visited:
visited.add(temp)
if check_prime(temp):
answer += 1
return answer
출처: 프로그래머스 코딩 테스트 연습, https://programmers.co.kr/learn/challenges
'알고리즘[Python] > 프로그래머스' 카테고리의 다른 글
[ Lv 2 ] 뉴스 클러스터링 (0) | 2021.06.22 |
---|---|
[ Lv 2 ] 게임 맵 최단거리 (0) | 2021.06.22 |
[ Lv 2 ] 더 맵게 (0) | 2021.06.21 |
[ Lv 2 ] 기능개발 (0) | 2021.06.21 |
[ Lv 2 ] 타겟 넘버 (0) | 2021.06.21 |