Algorithm/Programmers

[완전탐색] 프로그래머스 Lv2. 소수 찾기 - Python

jyjyjy25 2024. 3. 21. 23:50

🗂️ 문제

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

 

프로그래머스

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

programmers.co.kr

 

💡 접근법

순열을 사용하여 numbers에서 만들 수 있는 모든 경우의 수를 생성하여 set에 저장한다.

이때 중복된 값이 저장될 수 있으므로 set을 사용한다.

모든 경우의 수에 대해 소수인지 판별한다.

 

👀 배운 코드

from itertools import permutations

def solution(numbers):
    answer = 0
    
    def is_prime(n):
        if n < 2:
            return False
        
        for i in range(2, n):
            if n % i == 0:
                return False
            
        return True
    
    nums_set = set()
    for i in range(1, len(numbers) + 1):
        for p in permutations(numbers, i):
            nums_set.add(int(''.join(p)))
    
    for n in nums_set:
        if is_prime(n):
            answer += 1
            
    return answer

 

🧐 배운 점

  1. set 자료형
    • 초기화: set()
    • 값 추가: add()
  2. 순열 라이브러리
    • permutations(numbers, i): iterable한 리스트인 numbers에서 i개를 선택한 모든 경우의 수에 대한 쌍을 튜플 형식으로 반환한다.

 

🔗 Reference

 

[Python / 파이썬] 집합(set) 자료형 정리

1. 집합 자료형의 특징 중복을 허용하지 않는다 순서가 없다(Unordered) 따라서 주로 중복을 제거하기 위한 필터나 어떤 값이 포함되어 있는지만을 확인하기 위한 용도로 쓰임 2. 집합 자료형 초기

mjmjmj98.tistory.com

 

[Python] 순열(permutations )과 조합(combinations)

딱 정리 product('ABCD', repeat=2) AA AB AC AD BA BB BC BD CA CB CC CD DA DB DC DD permutations('ABCD', 2) AB AC AD BA BC BD CA CB CD DA DB DC combinations('ABCD', 2) AB AC AD BC BD CD combinations_with_replacement('ABCD', 2) AA AB AC AD BB BC BD CC CD D

pearlluck.tistory.com