https://school.programmers.co.kr/learn/courses/30/lessons/42839
문제 해결을 위한 과정
이 문제의 경우 permutaions를 이용하면 해결할 수 있는 문제였습니다. 순서가 중요하므로 조합이 아닌 순열이라는 점이 중요합니다.
결국 각각의 수로 만들 수 있는 순열을 생성한 뒤 해당 숫자가 소수인지를 판별하면 됩니다. 중복이 허용되지 않으므로 set자료형에 삽입하여 중복을 제거하였습니다.
소수 판별의 경우 isPrime이라는 메소드를 생성하여 해결하였습니다. 소스코드로 작성하면 다음과 같습니다.
소스코드
from itertools import permutations
import math
def isPrime(num):
if num <= 1:
return False
for i in range(2, int(math.sqrt(num)) + 1):
if num % i == 0:
return False
return True
def solution(numbers):
answer = 0
tempAnswer = set()
temp = []
for i in range(len(numbers)):
temp.append(numbers[i])
for i in range(1, len(temp) + 1):
for p in permutations(temp, i):
tmp = ""
for j in range(len(p)):
tmp += p[j]
if isPrime(int(tmp)):
tempAnswer.add(int(tmp))
answer = len(tempAnswer)
return answer
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 소수 찾기 (Python) (0) | 2024.04.18 |
---|---|
프로그래머스 프로세스 (Python) (0) | 2024.04.14 |
프로그래머스 이중우선순위큐 (Python) (0) | 2024.04.14 |
프로그래머스 올바른 괄호 (Python) (0) | 2024.04.13 |
프로그래머스 디스크 컨트롤러 (Python) (0) | 2024.04.13 |