본문 바로가기

알고리즘/프로그래머스 문제풀이

프로그래머스 - 소수찾기 (Python)

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=python3 

 

프로그래머스

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

programmers.co.kr

 

문제 접근

  • 한자리 숫자가 적힌 카드들을 조합해서 만들 수 있는 소수의 개수를 구하는 문제

아이디어

  • 주어진 카드로 수를 만들어 set에 저장하기(중복을 피하기 위함)
  • set에 넣기전에 에라토스테네스(소수 판별 알고리즘)의 체를 활용해서 소수만 넣기
  • 완성된 set의 개수 리턴하기

 

코드

myset = set()
def solution(numbers):
    dfs('',numbers)
    
    return len(myset)
def dfs(temp, numbers):
    
    if temp != '' :
        if isprime(int(temp)):
             myset.add(int(temp))
        
    for i in range(len(numbers)):
        dfs(temp+numbers[i], numbers[:i]+numbers[i+1:])

def isprime(number):
    if number in (0,1):
        return False
    for i in range(2, number):
        if number % i == 0:
            return False
        
    return True

 

코틀린으로 풀때는 잘됐는데 파이썬으로 구동하니 자꾸 에러떠서 다른사람 풀이법 보고 참조함....