NIRVANA

[level 1] 소수 만들기 본문

Coding test(Python3)/Programmers

[level 1] 소수 만들기

녜잉 2023. 8. 9. 18:03

문제

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

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

 

문제 풀이 접근법1

1) combinations함수를 사용하여 숫자 3개를 고른다

2) 1)의 조합의 합을 구한 뒤, 2부터 조합의 합까지의 수로 나눈다. 이때 만약 나누어지는 수가 있다면 count+1을 한다.

3) count가 1이하인지 확인한다. count가 0이면 소수이므로 answer에 +1을 한다.

from itertools import combinations

def solution(nums):

    answer = 0

    for i in combinations(nums, 3):
        count = 0
        a = sum(i)
        
        for j in range(2, a):
            if a % j == 0:
                count+=1
    
        if count < 1:
            answer+=1

    
    return answer

combinations함수가 math에 있을 줄 알았는데 from itertools import combinations에 있어서 놀랐다..