[python] 프로그래머스 소수 찾기

Youngseo Lee·2024년 9월 21일

완전탐색

목록 보기
1/3

프로그래머스 소수 찾기

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

문제

풀이

from itertools import permutations
import math

def is_prime(num):
    # 2보다 작은 숫자는 소수가 아님
    if num < 2:
        return False
    
    # 2부터 √num까지 나누어떨어지는지 확인
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:
            return False
    return True

def solution(numbers):
    answer = 0
    
    # 조합 생성 
    numbers_list = list(numbers)
    numbers_set = set()
    
    # 숫자의 자리수 만큼
    for i in range(1, len(numbers_list) + 1):
        temp = permutations(numbers_list, i)
        for j in temp:
            result = int(''.join(j))
            numbers_set.add(result)  # 중복 방지를 위해 set에 바로 추가

    # 소수 판별
    for num in numbers_set:
        if is_prime(num):
            answer += 1
            
    return answer

📌 주의

  • for 문이 너무 많으니 소수 판별 함수를 따로 만드는 것을 추천.
  • set 은 append 가 아닌 add 와 Update 를 쓴다. 까먹지 말자.
profile
leenthepotato

0개의 댓글