문제
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.
입출력 예
해결 방법
- 소수를 판별하는 함수를 미리 만들어놓는다.
- permutation 함수를 이용해서 순열을 만든다.
- 루프를 돌며 소수인지 판별한다.
코드
from itertools import permutations
def isPrime(number):
if number < 2:
return False
else:
for i in range(2, number):
if number % i == 0:
return False
return True
def solution(numbers):
answer = 0
perSet = []
for i in range(1, len(numbers)+1): # 1부터 numbers의 자릿수 만큼 순열을 만든다.
for j in list(permutations(numbers, i)): # permutations 함수는 튜플 형태로 모든 순열을 return 해준다. list로 받아줘야 함.
j = int("".join(j)) # 튜플 형태로 되어 있는 값을 소수 판별할 수 있도록 가공한다.
if j not in perSet:
perSet.append(j)
if isPrime(int(j)):
answer += 1
print(j)
return answer
from itertools import permutation <- 꼭 외우자
반응형
'Problem Solve > 프로그래머스' 카테고리의 다른 글
[프로그래머스 - Python3] 타겟 넘버 (0) | 2024.07.03 |
---|---|
[프로그래머스 - Python3] 피로도 (0) | 2024.06.18 |
[프로그래머스 - Python3] 카펫 (0) | 2024.06.17 |
[프로그래머스 - Python3] 모의고사 (0) | 2024.04.09 |
[프로그래머스 - Python3] 최소직사각형 (0) | 2024.04.09 |