[Programmers 42839] 소수찾기

Updated:

문제

LV2 [Programmers 42829 - 소수찾기]

문제 풀이 방법

각 숫자들로 나올 수 있는 숫자들은 itertools의 permutation 라이브러리를 활용하면 쉽게 구할 수 있다. 소수 판별 함수는 숫자의 제곱근까지 반복문을 돌려 나누어 떨어진다면 false 나누어 떨어지지 않는다면 true를 반환하는 함수를 구현한다.

  1. 각 숫자의 조합으로 만들 수 있는 숫자들을 s라는 집합에 저장한다.
  2. s에 있는 각 숫자들을 소수인지 확인하는 isPrime에 넣고 True일 경우에 answer ++을 한다.

풀이 코드

Python

import itertools

def is_prime(x):
    if x < 2: 
        return False
    for i in range(2, int(x**0.5)+1):
        if x % i == 0:
            return False
    return True

def solution(numbers):
    answer = 0
    s=set()
    num_list=[x for x in numbers]
    for i in range(1,len(num_list)+1):
        result=list(itertools.permutations(num_list,i))
        for j in result:
            s.add(int(''.join(j)))
    for i in s:
        if is_prime(i):
            answer+=1
    return answer

if __name__ == '__main__':
    solution("17")

댓글남기기