완전 탐색 - 소수찾기

송다은·2024년 10월 14일

오늘 코드도 다른 분들의 코드를 참고하였습니다!!

from itertools import permutations

def solution(numbers):
    answer = []
    num = [i for i in numbers]
    per = []
    for i in range(1, len(numbers)+1):
        per+= list(permutations(num,i)) #i개씩 순열 조합 만들기 
    
    result = [int(''.join(p)) for p in per]
    # 튜플 형태 -> for문으로 돌려서 숫자로 만들어주기
    for n in result:
        if n<2:
            continue
        check = True
        for i in range(2,int(n**0.5)+1):
            if n % i ==0:
                check=False
                break
        if check:
            answer.append(n)
    
    return len(set(answer))

keypoint

  • 순열 조합 생성할 때 itertools.permutations 사용하기 ex) list(permutations(num, i)) => num의 숫자들로 i개씩 순열 조합 만들기
  • 소수 찾기
    - 만약 n이 어떤 수 i로 나누어 떨어진다면 i*j=n을 만족하는 두 수 중 하나는 반드시 제곱근 이하에 있기 때문에 제곱근을 기준으로 그보다 작은 수들만 확인하면 된다.
  • 중복 버리기
    - set()을 사용해서 중복이 있으면 제외시킬 수 있음
profile
Anomaly Detection, AI Security, Multimodal

0개의 댓글