728x90
반응형
SMALL

1. 문제 설명

 

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.

제한사항

nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.

nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

 

2. 입출력 예

nums result
[1,2,3,4] 1
[1,2,7,6,4] 4

입출력 예 설명

입출력 예 #1
[1,2,4]를 이용해서 7을 만들 수 있습니다.

입출력 예 #2
[1,2,4]를 이용해서 7을 만들 수 있습니다.
[1,4,6]을 이용해서 11을 만들 수 있습니다.
[2,4,7]을 이용해서 13을 만들 수 있습니다.
[4,6,7]을 이용해서 17을 만들 수 있습니다.

 

3. 문제 풀이

서로 다른 3개를 골라야 되기 때문에 3중 for 문을 쓰던 combinations를 import 시켜서 조합을 만들어내야된다.

작성된 코드 설명은 다음과 같다

(1) 코드는 단순하게 3중 for 문을 써서 조합을 만들다.

(2) 조합중 2,3 으로 나누어 떨어지는 수들을 먼저 제외시킨다.

(3) 나머지 수들 중 1을 제외한 홀수로 나누어 떨어짐을 검사해서 소수를 찾음

def solution(nums):
    
    answer = 0
    l = len(nums)
    
    for i in range(l-2):
        for j in range(i+1,l-1):
            for q in range(j+1,l):
                s = nums[i]+nums[j]+nums[q]
                if s%2==0 or s%3==0:
                    continue
                else:
                    prime = True
                    for r in range(3,int(s**0.5)+1,2):
                        if s%r==0:
                            prime = False
                            break
                    if prime:
                        answer += 1
    
    return answer
728x90
반응형
LIST

+ Recent posts