Algorithm : Programmers - 소수만들기
https://programmers.co.kr/learn/courses/30/lessons/12977
👉 문제
🐱👤모범답안
from itertools import combinations
import math
# 소수 판별
def isprime(n):
# 소수 판별할 숫자의 제곱근을 구한다.
sqrt = math.sqrt(n)
# 제곱근이 2보다 작으면 소수가 아니다.
if sqrt < 2:
return False
# 2부터 제곱근까지 나눴을때 나머지가 0이 나오면 소수가 아니다.
for i in range(2, int(sqrt+1)):
if n % i == 0:
return False
return True
def solution(nums):
answer = 0
# 중복을 제거한 3개로 된 숫자의 배열을 만듬
arr = list(combinations(nums, 3))
print('arr = > ',arr)
# 3개의 배열을 소수판별 시킴 -> 세개의 합이 True 면
for n1, n2, n3 in arr:
print('n1 = > ', n1)
print('n2 = > ', n2)
print('n3 = > ', n3)
print('----------')
if isprime(n1+n2+n3):
# answer를 + 1
answer += 1
return answer
print(solution([1,2,4,5]))
arr = > [(1, 2, 4), (1, 2, 5), (1, 4, 5), (2, 4, 5)]
n1 = > 1
n2 = > 2
n3 = > 4
----------
n1 = > 1
n2 = > 2
n3 = > 5
----------
n1 = > 1
n2 = > 4
n3 = > 5
----------
n1 = > 2
n2 = > 4
n3 = > 5
----------
2
🥽 문제풀이
-
combinations 를 이용하여 중복을 제거한 3개 숫자의 배열을 만듬.
-
isprime 함수를 만들어서 소수 판별을 한다.
- 소수 판별할 숫자의 제곱근을 구한다.
- 제곱근이 2보다 작으면 소수가 아니다.
- 2부터 제곱근까지 나눴을때 나머지가 0이 나오면 소수가 아니다.
- 나누어 떨어지지 않으면 소수이다.
Author And Source
이 문제에 관하여(Algorithm : Programmers - 소수만들기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@coil/Algorithm-Programmers-소수만들기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)