[Programmers 42839] 소수찾기
문제
LV2 [Programmers 42829 - 소수찾기]
문제 풀이 방법
각 숫자들로 나올 수 있는 숫자들은 itertools의 permutation 라이브러리를 활용하면 쉽게 구할 수 있다. 소수 판별 함수는 숫자의 제곱근까지 반복문을 돌려 나누어 떨어진다면 false 나누어 떨어지지 않는다면 true를 반환하는 함수를 구현한다.
- 각 숫자의 조합으로 만들 수 있는 숫자들을 s라는 집합에 저장한다.
- s에 있는 각 숫자들을 소수인지 확인하는 isPrime에 넣고 True일 경우에 answer ++을 한다.
풀이 코드
Python
import itertools
def is_prime(x):
if x < 2:
return False
for i in range(2, int(x**0.5)+1):
if x % i == 0:
return False
return True
def solution(numbers):
answer = 0
s=set()
num_list=[x for x in numbers]
for i in range(1,len(num_list)+1):
result=list(itertools.permutations(num_list,i))
for j in result:
s.add(int(''.join(j)))
for i in s:
if is_prime(i):
answer+=1
return answer
if __name__ == '__main__':
solution("17")
댓글남기기