m1ndy5's coding blog

99클럽 코테 스터디 10일차 TIL 완전탐색 : 프로그래머스 LV.2 소수 찾기 with Python 본문

알고리즘 with python/알고리즘 스터디

99클럽 코테 스터디 10일차 TIL 완전탐색 : 프로그래머스 LV.2 소수 찾기 with Python

정민됴 2024. 5. 29. 17:43

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제는 위쪽에서!

 

import itertools

def solution(numbers):
    answer = 0
    arr = set()
    for i in range(1, len(numbers)+1):
        
        # numbers에 있는 숫자로 만들 수 있는 조합
        for a in itertools.permutations(numbers, i):
            num = int(''.join(a))
            
            # 1과 0은 소수 아님
            if num != 1 and num != 0:
                arr.add(num)
    
    # 소수인지 아닌지 판별
    for a in arr:
        for i in range(2, int(a**(1/2))+1):
            if a%i==0:
                break
        else :
            answer += 1
    return answer

숫자로 만들 수 있는 조합들을 소수인지 아닌지 판별하는 방법으로 풀었다.

 

또 다른 풀이 방법으로는 소수들을 먼저 다 구해놓은뒤 조합으로만들 수 있는지 없는지 확인해도 될 것 같다.