728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42839?language=python3
문제 접근
- 한자리 숫자가 적힌 카드들을 조합해서 만들 수 있는 소수의 개수를 구하는 문제
아이디어
- 주어진 카드로 수를 만들어 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
코틀린으로 풀때는 잘됐는데 파이썬으로 구동하니 자꾸 에러떠서 다른사람 풀이법 보고 참조함....
'알고리즘 > 프로그래머스 문제풀이' 카테고리의 다른 글
프로그래머스 최솟값 만들기(lv2, Python) (0) | 2023.02.24 |
---|---|
프로그래머스 올바른 괄호(lv2, Python) (0) | 2023.02.24 |
프로그래머스 최소 직사각형(lv1, python) (0) | 2023.02.21 |
프로그래머스 lv2 괄호 회전하기(kotlin) (0) | 2023.02.14 |
프로그래머스 lv2 - 타겟넘버(Kotlin) (0) | 2023.02.03 |