출처
https://programmers.co.kr/learn/courses/30/lessons/42839
def isPrime(num):
num = int(num)
if (num == 1) or (num == 0):
return False
for i in range(2,num):
if num % i == 0:
return False
return True
def solution(numbers):
cnt = []
for i in range(len(numbers)):
if isPrime(numbers[i]):
cnt.append(numbers[i])
for j in range(len(numbers)):
if i != j:
if isPrime(str(numbers[i])+str(numbers[j])):
cnt.append(str(int(str(numbers[i])+str(numbers[j]))))
return len(set(cnt))
위의 코드의 경우 카드가 2개 이하인 경우에만 가능했다.
카드가 n장 있을 때 모든 순열을 찾는 방법을 생각해보다 라이브러리가 있을거라는 생각이 들었고 결국 검색해서 itertools를 사용하게 되었다.
https://potensj.tistory.com/110
https://juhee-maeng.tistory.com/91?category=922562
from itertools import permutations
def isPrime(num):
num = int(num)
if (num == 1) or (num == 0):
return False
for i in range(2,num):
if num % i == 0:
return False
return True
def solution(numbers):
cnt = []
permuList = []
for i in range(len(numbers)):
permuList += list(map(''.join, permutations(numbers, i+1)))
for p in permuList:
if isPrime(p):
cnt.append(str(int(p)))
return len(set(cnt))
filter 사용하는 다른 사람의 코드를 참고해 나의 코드의 일부분을 수정해봤다.
# 수정 전 코드
for p in permuList:
if isPrime(p):
cnt.append(str(int(p)))
return len(set(cnt))
# 수정 후 코드
permuList = map(int, permuList)
return len(list(filter(isPrime, set(permuList))))
itertools
filter