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

    문제 정보

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

     

    프로그래머스

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

    programmers.co.kr

     

    문제 분석

    우선 종이 조각을 이어 붙여 만들 수 있는 만들 수 있는 숫자의 모든 경우의 수를 구해야 한다 -> 순열을 사용한다. 

    모든 경우의 수에 대하여 소수인지 아닌지 판단한다 -> 완전 탐색

     

    풀이 코드

    import itertools 
    
    def is_decimal(num):
        if num == 1:
            return False
        for x in range(2, num):
            if num % x == 0:
                print('num, x:', num, x)
                return False
        return True
    
    def solution(numbers):
        answer = 0
        
        arr = []
        for i in range(1, len(numbers)+1):
            case = list(itertools.permutations(numbers, i))
            for c in case:
                num = int("".join(map(str, c)))
                if num != 0:
                    arr.append(num)
        arr = list(set(arr))
        
        for a in arr:
            if is_decimal(a):
                answer += 1
        
        return answer
     

    댓글