프로그래머스-소수찾기

Hank Kim·2022년 3월 5일
0

알고리즘 문제풀이

목록 보기
15/24
post-thumbnail

문제 설명

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

제한사항

numbers는 길이 1 이상 7 이하인 문자열입니다.
numbers는 0~9까지 숫자만으로 이루어져 있습니다.
"013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.

문제풀이

from itertools import permutations
from math import sqrt
def solution(numbers):
    answer = 0
    arr = [i for i in numbers]
    list = []
    for i in range(1,len(arr)+1):
        list+=permutations(arr,i)
    for i in range(len(list)):
        list[i] = int(''.join(list[i]))
    for i in set(list):
        if is_prime_num(i):
            answer+=1
    return answer
        
def is_prime_num(x):
    if x < 2:
        return False
    for i in range(2,int(sqrt(x))+1):
        if x%i == 0:
            return False
    return True

헷갈렸던 것

리스트를 합칠때 arr1+arr2 이런식으로 합칠 수 있다. append를 쓰면 그냥 리스트의 원소로 리스트 하나가 들어가게 된다.
permutations(arr,2) 결과는 object를 반환한다. list()로 감싸서 쓰던지 list에 더하면 된다.

profile
JavaScript, Python Algorithm

0개의 댓글