알고리즘

프로그래머스 42839 - 소수 찾기

ljw4104 2021. 8. 30. 18:37

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

 

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

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

programmers.co.kr

  1. numbers를 각각 쪼갠뒤에 조합될 수 있는 모든 경우의 수 찾기.
  2. 모든 경우의 수를 소수가 맞는지 아닌지 각각 판단하기.
from itertools import permutations
import math

def isPrime(number):
    if number <= 1 :
        return False
    else:
        sqrt_num = int(math.sqrt(number))
        for i in range(2, sqrt_num + 1):
            if number % i == 0:
                return False
        return True    
        

def solution(numbers):
    answer = 0
    ans = []
    for i in range(len(numbers)):
        temp = permutations(numbers,i+1)
        for n in temp:
            temp_str = ''.join(n)
            ans.append(int(temp_str))
    ans = list(set(ans))
    for i in ans:
        if isPrime(i):
            answer += 1
    return answer

 

  • 이 수가 소수인지 아닌지는 2부터 √(해당수) 까지만 비교하면 된다.