얼렁뚱땅 스며드는 Data Science

Algorithm/Daily Coding Tests Challenge

[프로그래머스] level2. 소수 찾기

Jesip14 2021. 9. 7. 19:08

문제 설명

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다.

각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 solution 함수를 완성해주세요.

 

나의 풀이

from itertools import permutations

def isprime(n):
    divisor = 0
    for i in range(2, int(n ** 0.5) + 1):
        if n % i == 0:
            divisor += 1
    return 1 if divisor == 0 else 0

def solution(numbers):
    numbers = list(numbers)
    permute = []
    
    # 모든 순열을 만들어보기
    for i in range(1, len(numbers) + 1):
        for j in permutations(numbers, i):
            num = int("".join(j))
            if (num not in permute) and (num >= 2):
                permute.append(int("".join(j)))
    
    return sum([isprime(k) for k in permute])

 

문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42839

 

코딩테스트 연습 - 소수 찾기

한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이

programmers.co.kr