Contents
- 문제 설명
[제한사항]
[입출력 예] - 알고리즘 분석
[나의 풀이]
문제 설명
주어진 숫자 중 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
'프로그래머스(Python) > Level2' 카테고리의 다른 글
[프로그래머스] '라면 공장' 알고리즘 풀이 - Python (0) | 2020.02.06 |
---|---|
[프로그래머스] '짝지어 제거하기' 알고리즘 풀이 - Python (0) | 2020.02.04 |
[프로그래머스] '괄호 변환' 알고리즘 풀이 - Python (0) | 2020.02.03 |
[프로그래머스] 타겟 넘버 알고리즘 풀이 - Python (0) | 2020.01.30 |
[프로그래머스] 조이스틱 알고리즘 풀이 - Python (0) | 2020.01.30 |