https://programmers.co.kr/learn/courses/30/lessons/42839?language=python3#
풀이
파이썬의 itertools의 permutation을 통해서 쉽게 구현이 가능했다.
먼저 모든 순열을 다 고려하는데, 만들어진 순열 String을 Integer로 변경하고
해당 Integer가 소수 Prime 인지 체크해서 개수를 카운트해주면 된다.
이 때, 중복 값 방지를 위해 개수 카운트 시 집합을 활용한다.
import itertools
# 소수체크
def prime_check(a):
if(a<=1):
return False
for n in range(2,a):
if a % n == 0:
return False
return True
def solution(numbers):
# 집합에 permuation 통해 탐색하며 값 추가
val_set = set()
for i in range(len(numbers),0,-1):
for val in list(map("".join, itertools.permutations(numbers,i))):
if prime_check(int(val)) is True:
val_set.add(int(val));
return len(val_set)
'Archived(CSE Programming) > 알고리즘(Python)' 카테고리의 다른 글
커리큘럼(파이썬) / 위상 정렬(topology sort) (0) | 2020.10.11 |
---|---|
[백준 1647번] 도시 분할 계획(파이썬) / 크루스칼(MST) (0) | 2020.10.10 |
팀 결성(파이썬) / 사이클 체크 (0) | 2020.10.10 |
전보 (파이썬) / 최단경로(다익스트라) (0) | 2020.10.09 |
미래 도시(파이썬) / 최단경로 그래프 (1) | 2020.10.09 |