배고픈 개발자 이야기

[Summer/Winter Coding] 소수 구하기 본문

알고리즘 문제/PROGRAMMERS

[Summer/Winter Coding] 소수 구하기

이융희 2021. 7. 31. 14:56
728x90

이 문제는 주어진 숫자열 중 3가지 숫자의 합을, 그 숫자가 소수(prime number)인지 판별하는 문제로 2가지 로직만 완성하면 된다.

 

1. 3가지 숫자를 뽑는 경우의 수를 구현하는것

경우의 수는 아래의 링크를 참조하여 순서는 상관없을 때 중복을 허용하지 않는 경우의 수를 구했다.

https://wikidocs.net/23278

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

2. prime number를 효과적으로 판별하는 방법

1. 2부터 순차적으로 전체 숫자를 구하는 방법

2. 2부터 중간값까지 구하는 방법

3. 2부터 최대공약수 root(prime number)까지 구하는 방법

중 3번으로 풀었다.

from itertools import combinations

def isPrime(comb):
    max_num = int(comb**(1/2)) + 1
    for divide in range(2, max_num):
        if comb % divide == 0:
            return False
    return True

def solution(nums):
    answer = 0
    for comb in list(combinations(nums, 3)):
        answer += isPrime(sum(comb))
    return answer
Comments