Notice
Recent Posts
Recent Comments
Link
개발 무지렁이
[문제풀이 py] P42839 소수찾기 본문

소수찾기 / 순열 🍔
🎠. 'itertools 모듈'을 이용해 'permutations()' 내장 메서드를 이용할 줄 알아야 한다. => '순열'
🎠. '리스트'를 '문자열'로 변환할 줄 알아야 한다. => ' "".join(list) '
🎠. 리스트의 '중복을 제거'하는 방법을 알아야 한다 => 'dict.fromkeys(list)'
🎠. '소수 찾는 알고리즘'을 구현할 줄 알아야 한다 => '에라토스테네스의 체'

import itertools
import math
def is_prime(num):
end = int(math.sqrt(num))
for i in range(2, end+1):
if num % i == 0:
return False
return True
def solution(numbers):
pieces = list(numbers)
length = len(pieces)
cnt = 0
result = []
for i in range(length):
perm = itertools.permutations(pieces, i+1)
arr = list(perm)
for ele in arr:
str = "".join(ele)
num = int(str)
if num != 0:
result += [num]
result = list(dict.fromkeys(result))
for ele in result:
if ele > 1 and is_prime(ele):
cnt += 1
return cnt
💡. 문제 접근 방법
: 문자열을 쪼개 조합하는 과정에서 순서가 영향을 미치므로 순열을 이용해야 겠다고 생각했다.
permutation() 메서드를 이용하면 각 경우에 대한 쌍을 튜플형식으로 표현한 객체 리턴하는데,
이를 튜플을 원소로 하는 리스트로 변환해, 문자열로 바꿔주는 과정에서 많이 헤맸다.
그 후, 문자열을 int로 바꾸고 중복을 제거해 result라는 리스트에 넣어주었다.
소수 찾는 알고리즘은 '에라토스테네스의 체'를 이용해서 소수를 찾아주었다.
'코딩 테스트 > 문제풀이 Python ver.' 카테고리의 다른 글
[문제풀이 py] B17298 오큰수 (0) | 2023.07.08 |
---|---|
[문제풀이 py] B2559 수열 (0) | 2023.07.08 |
[문제풀이 py] B15686 치킨배달 (0) | 2023.07.07 |
[문제풀이 py] P84512 모음사전 (0) | 2023.07.06 |
[문제풀이 py] P87946 피로도 (0) | 2023.07.05 |
Comments