소수 찾기

최민수·2023년 5월 15일
0

알고리즘

목록 보기
54/94
from itertools import permutations
import math

# 소수 검증
def isPrime(num_int):
    if num_int < 2:
        return False
    if num_int == 2:
        return True
    
    for i in range(2, math.ceil(math.sqrt(num_int))+1):
        if num_int % i == 0: 
            return False
    return True


def solution(numbers):
    answer = set()
    nums = list(numbers)
    
    # 완전탐색 가능 (7!)
    for size in range(1, len(nums)+1):
        perm = permutations(nums, size)
        for items in perm:
            num_str = ''.join(x for x in items)
            num_int = int(num_str)
            if isPrime(num_int):
                answer.add(num_int)
            
    return len(answer)

완전탐색이 가능한 상황임을 인지하는게 포인트인 문제였다.
경우의 수는 기껏해야 7! + 6! + ... + 1! 정도가 나오니 완전탐색을 하기에 문제 없었다.

완전탐색으로 가능하다는 사실을 알게되면 그 다음은 순열, 소수 검증 함수를 만들어 구현을 꼼꼼히 하는게 다였던 문제였다.


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

profile
CS, 개발 공부기록 🌱

0개의 댓글