문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42839
문제 설명
각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이 조각으로 만들 수 있는 소수가 몇 개인지 return 하도록 함수를 작성
제한 사항
- numbers는 길이 1 이상 7 이하인 문자열입니다.
- numbers는 0~9까지 숫자만으로 이루어져 있습니다.
- "013"은 0, 1, 3 숫자가 적힌 종이 조각이 흩어져있다는 의미입니다.
풀이
- numbers의 순열을 구한다.
- SET을 이용해, 각 순열로 이루어진 숫자의 중복을 제거한다.
- 소수를 찾는 함수를 통해 소수를 찾는다.
✅ Code - 성공
from itertools import permutations
# 소수 찾는 함수
def find_prime(n):
if n < 2:
return False
for i in range(2, int(n**(1/2)) + 1):
if n % i == 0:
return False
return True
def solution(numbers):
answer = 0
permu = []
for i in range(1, len(numbers) + 1):
permu += list(permutations(numbers, i))
num_lst = set()
for c in permu:
c = int(''.join(c))
num_lst.add(c)
for n in num_lst:
if (find_prime(n)):
answer += 1
return answer
'알고리즘 문제 > 프로그래머스_Lv2 도장깨기' 카테고리의 다른 글
[프로그래머스] 오픈채팅방 (Python) (0) | 2024.06.04 |
---|---|
[프로그래머스] 카펫 (Python) (0) | 2024.05.16 |
[프로그래머스] H-Index (Python) (0) | 2024.05.13 |
[프로그래머스] 가장 큰 수 (Python) (0) | 2024.05.10 |
[프로그래머스] 더 맵게 (Python) (1) | 2024.05.09 |