프로그래머스(Python)/Level2

[프로그래머스] '소수 만들기' 알고리즘 풀이 - Python

Jinomad 2020. 2. 4. 11:14

Contents

  1. 문제 설명

    [제한사항]

    [입출력 예]
  2. 알고리즘 분석 

    [나의 풀이]

 

문제 설명

 

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

 

 

 

 

제한사항

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

 

입출력 예

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



알고리즘 분석

  오랜만에 쉽게 풀수있는 문제였던것 같다. 

 

  • 나의 풀이
from itertools import combinations
def solution(nums):
    ans = 0 
    num = list(map(sum,combinations(nums, 3))) # 3개로 만들 수 있는 조합을 모두 찾아서 그 합들을 num에 저장
    for sosu in num:
        for i in range(2,sosu):
            if sosu % i == 0: # 소수가 아니라면 아무것도 하지 않는다
                break
        else: 
            ans += 1 # 소수라면 ans에 1을 더한다. 
    return ans