728x90
문제
코드
from itertools import permutations
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5) + 1):
if num % i == 0:
return False
return True
def solution(numbers):
answer = set()
# 가능한 모든 숫자를 생성하여 집합에 추가
for i in range(1, len(numbers) + 1):
perms = permutations(numbers, i)
for perm in perms:
num = int(''.join(perm))
if is_prime(num):
answer.add(num)
return len(answer)
permutations 함수는 입력된 iterable(여기서는 numbers)에서 주어진 길이(i)만큼의 모든 가능한 순열을 반환합니다.
다른 사람 코드
primeSet = set()
def is_prime(num):
if num < 2:
return False
for i in range(2, int(num**0.5)+1):
if num % i == 0:
return False
return True
def makeCombination(str1, str2):
if str1 != "":
if is_prime(int(str1)):
primeSet.add(int(str1))
for i in range(len(str2)):
makeCombination(str1 + str2[i], str2[:i]+ str2[i+1:])
# str2[:i]: 문자열의 시작부터 i 이전까지의 부분 문자열을 선택합니다.
# str2[i+1:]: 문자열의 i+1 인덱스부터 끝까지의 부분 문자열을 선택합니다.
# 두 부분 문자열을 합치면, str2에서 i에 해당하는 문자를 제외한 부분 문자열을 얻게 됩니다.
def solution(numbers):
makeCombination("", numbers)
return len(primeSet)
접근법
배운 점
permutations 함수에 대해서 배웠고 list indexing에 대해서 더 깊이 있게 배웠다
'자료구조&알고리즘 > 프로그래머스' 카테고리의 다른 글
[Python] 대충 만든 자판 (0) | 2024.12.22 |
---|---|
[PCCP 기출문제] 2번 / 퍼즐 게임 챌린지 (0) | 2024.12.22 |
[Python] 모의고사 - 완전탐색 (0) | 2024.02.15 |
[Python] 최소 직사각형 - 완전탐색 (0) | 2024.02.14 |
[Python] H_Index - 정렬 (0) | 2024.02.13 |