programmers.co.kr/learn/courses/30/lessons/42839

 

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

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

programmers.co.kr


풀이 전략

1. 모든 경우의 수를 탐색해서 숫자의 집합을 만들자

  ex) input =>"14" ,  nums = [1, 4, 14, 41]

 

2. 소수를 판별하는 함수를 만들어서 총 몇 개의 소수를 만들 수 있는지 return하자


코드

 

import itertools

def isPrimeNum(n):
    if n == 0 or n == 1:
        return False
    for i in range(2, n):
        if n % i == 0:
            return False
    return True

def solution(numbers):
    nums = list()
    for i in range(1, len(numbers) + 1):
        N = itertools.permutations(numbers, i)
        nums.extend(map(lambda x: int(''.join(x)), N))       
    nums = set(nums)
    
    res = 0
    for num in nums:
        if isPrimeNum(num):
            res += 1
    return res

 

+ Recent posts