흔한 소수 문제였다
from itertools import permutations
def is_prime(n):
if n == 1 or n == 0:
return False
else:
for i in range(2, int(n**0.5)+1):
if n%i == 0:
return False
else:
return True
def solution(numbers):
count = 0
possible_num = []
for i in range(0, len(numbers)+1):
for j in permutations(list(numbers), i):
if ''.join(j) == '':
continue
else:
possible_num.append(int(''.join(j)))
possible_num = set(possible_num)
for k in possible_num:
if is_prime(k):
count += 1
return count
하지만 흔하다고 쉬운 것은 아니다. 소수 문제는 항상 까먹는다;; 그래서 다시 고민하고 예전의 기억들을 끄집어내야 했다. 또한, 여기서는 주어진 숫자 문자열에서 가능한 모든 조합을 찾아내야 했는데, 이를 위해서는 itertools.permutations
를 불러와서 외부 함수를 사용했어야 했다. permutations(list(numbers), i)
를 통해 가능한 모든 숫자들의 조합을 찾을 수 있었다.
'알고리즘 테스트 > 프로그래머스 문제풀이 및 해설' 카테고리의 다른 글
<프로그래머스 문제풀이: [해시] 전화번호 목록> Level 2 - 파이썬 (0) | 2020.12.13 |
---|---|
<프로그래머스 문제풀이: [정렬] H-Index> Level 2 - 파이썬 (0) | 2020.12.12 |
<프로그래머스 문제풀이: [스택/큐] 주식가격> Level 2 - 파이썬 (0) | 2020.12.10 |
<프로그래머스 문제풀이: [스택/큐] 프린터> Level 2 - 파이썬 (0) | 2020.12.09 |
<프로그래머스 문제풀이: [스택/큐] 기능 개발> Level 2 - 파이썬 (0) | 2020.12.05 |