-
[Programmers] 소수 만들기programing/Algorithm 2021. 3. 27. 21:27
소수 만들기
Summer/Winter Coding(~2018)
level 1
python 3
from itertools import combinations import math; def is_prime(n): # n의 최대 약수가 sqrt(n) 이하이므로 i=sqrt(n)까지 검사 m = int(math.sqrt(n)) divisors = [i for i in range(1, m + 1) if n % i == 0] return len(divisors) == 1 def solution(nums): combi = list(combinations(nums, 3)) enables = list(filter(lambda com: is_prime(com[0] + com[1] + com[2]), combi)) return len(enables)
이전에 만들어놨던 prime_list 함수를 써먹을려고 했는데, 해당 함수는 n 이하의 모둔 소수를 찾는 함수라서 못써먹었다.
대신 루프 범위를 최적화하는 방식을 차용해서, 단순 루프를 돌려서 판단하기로 했다.
사실 더 최적화하려면 2부터 m - 1까지 for 루프를 돌면서 나뉘어 떨어진다면 False를 반환하고, 무사히 루프가 끝나면 True를 반환하게 할 수도 있을 것 같다.
'programing > Algorithm' 카테고리의 다른 글
[Programmers] 실패율 (0) 2021.03.28 [Programmers] 예산 (0) 2021.03.28 [Programmers] x만큼 간격이 있는 n개의 숫자 (0) 2021.03.27 [Programmers] 행렬의 덧셈 (0) 2021.03.27 [Programmers] 핸드폰 번호 가리기 (0) 2021.03.07 댓글