[프로그래머스 Lv2] 소수 찾기 (파이썬)

Jewon Joel Park·2022년 6월 15일
0

Programmers-solution

목록 보기
20/34

문제 링크


문제 설명

숫자 0~9로 이루어진 길이 1~7 자리의 문자열이 주어질 때, 해당 숫자들의 조합으로 만들 수 있는 소수의 개수를 반환하는 함수 작성


풀이 코드

from itertools import permutations

def is_prime(num):
    if num < 2:
        return False
    for i in range(2, int(num ** 0.5) + 1):
        if num % i == 0:
            return False
    return True
    
    
def solution(numbers):
    answer = 0
    combs = [list(i) for j in range(1, len(numbers)+1) for i in permutations(numbers, j)]
    sets = set()
    for items in combs:
        sets.add(int(''.join(items)))
    for item in sets:
        if is_prime(item):
            answer += 1
    return answer

코드 설명

  1. 소수 판별 함수 is_prime() (참고자료)
  2. permutations 모듈을 활용하여 1~문자열길이 만큼의 순열 조합을 생성하여 combs 변수에 배열 형태로 저장
  3. 중복을 제거하기 위하여 set타입 변수sets를 생성한 뒤, combs 안에 있는 문자열들을 결합하여 정수형으로 변환한 값을 sets에 추가
  4. sets내부의 각 정수개체에 접근하며 소수 판별 후, 소수일 경우 answer값을 1씩 추가하여 반환
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글