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

Eunding·2026년 4월 7일

algorithm

목록 보기
108/110

소수 찾기

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


아이디어

  1. 문제에서 주어진 numbers로 만들 수 있는 숫자 조합(string)을 만든다. => permutations 이용
  2. 숫자 조합을 for 문으로 돌면서 문자를 합친다. e.g., '1' + '3' => '13'
  3. 합친 숫자를 int로 변환하여 l(리스트)에 넣는다.
  4. l(리스트)에 있는 것들을 소수 판별 함수를 이용한다.

이때, 소수 판별은 함수화 시키는 게 기능적인 면에서도 편하고 return값이 있어서 더 간단해진다.
(만약 함수화 안하면 이중 for문 만들어서 해야하는데 그럼 소수가 아닐 때 break도 두 번 써야하고 상당히 귀찮다)


코드

from itertools import permutations

def check(n): # 소수 판별 함수
    for i in range(2, n):
        if n % i == 0: # 소수 아님
            return False
    return True # 소수임

def solution(numbers):
    answer = 0
    l = []
    for i in range(1, len(numbers)+1):
        for comb in permutations(numbers, i):
            temp = ''
            for x in comb:
                temp += x
            if int(temp) not in l:
                l.append(int(temp))
    
    # 소수 판별
    for x in l:
        if  x == 0 or x == 1 : continue
        answer += check(x)
    
    return answer

0개의 댓글