알고리즘
프로그래머스 42839 - 소수 찾기
ljw4104
2021. 8. 30. 18:37
https://programmers.co.kr/learn/courses/30/lessons/42839
코딩테스트 연습 - 소수 찾기
한자리 숫자가 적힌 종이 조각이 흩어져있습니다. 흩어진 종이 조각을 붙여 소수를 몇 개 만들 수 있는지 알아내려 합니다. 각 종이 조각에 적힌 숫자가 적힌 문자열 numbers가 주어졌을 때, 종이
programmers.co.kr
- numbers를 각각 쪼갠뒤에 조합될 수 있는 모든 경우의 수 찾기.
- 모든 경우의 수를 소수가 맞는지 아닌지 각각 판단하기.
from itertools import permutations
import math
def isPrime(number):
if number <= 1 :
return False
else:
sqrt_num = int(math.sqrt(number))
for i in range(2, sqrt_num + 1):
if number % i == 0:
return False
return True
def solution(numbers):
answer = 0
ans = []
for i in range(len(numbers)):
temp = permutations(numbers,i+1)
for n in temp:
temp_str = ''.join(n)
ans.append(int(temp_str))
ans = list(set(ans))
for i in ans:
if isPrime(i):
answer += 1
return answer
- 이 수가 소수인지 아닌지는 2부터 √(해당수) 까지만 비교하면 된다.