길이가 1 이상 7 이하인 문자열 n 을 입력받아, 각 자리 숫자의 조합으로 만들 수 있는 소수가 몇 개인지 return 하라.(n 은 0~9까지 숫자만으로 이루어져 있다.)
# itertools 라이브러리의 permutaions 는 iterable 객체에서 r 개 데이터를 뽑아
# 일렬로 나열하는 모든 경우(순열)를 계산해준다.
from itertools import permutations
def solution(n):
a = set()
for i in range(len(n)):
a |= set(map(int, map("".join, permutations(list(n), i + 1))))
# 0과 1을 제거
a -= set(range(0, 2))
# 에라토스테네스의 체 활용
for i in range(2, int(max(a) ** 0.5) + 1):
a -= set(range(i * 2, max(a) + 1, i))
return len(a)
|
: 합집합 연산자
&
: 교집합 연산자
-
: 차집합 연산자
^
: 대칭차집합(합집합 - 교집합) 연산자
|=
,&=
,-=
,^=
:=
과 조합하여 연산과 동시에 할당한다.a = {1, 2, 3, 4, 5} b = {3, 4, 5, 6, 7} a |= b a = {1, 2, 3, 4, 5, 6, 7} # a와 b의 합집합으로 바뀜 b = {3, 4, 5, 6, 7}