728x90
문제
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
1. nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
2. nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예
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을 만들 수 있습니다.
아래에서 풀어볼 수 있습니다.
https://school.programmers.co.kr/learn/courses/30/lessons/12977
from itertools import combinations
def solution(nums):
answer = 0
for i in combinations(nums,3):
s = sum(i)
checker = True
for n in range(2, int(s ** 0.5) + 1):
if s % n == 0:
checker = False
break
if checker == True:
answer += 1
return answer
combinations 함수를 이용하여 리스트에서 3개의 숫자 조합을 만들어 합을 만든다. 그렇게 나온 숫자의 합을 에라토스테네스의 체를 이용하여 소수판별을 해내고 소수에 해당할 때마다 answer값을 1씩 올려준다.
728x90
'Sketch (Programming Language) > Python' 카테고리의 다른 글
프로그래머스 - 이웃한 칸 (0) | 2024.05.05 |
---|---|
프로그래머스 - 추억 점수 (0) | 2024.05.04 |
Pandas(5) (0) | 2024.02.04 |
Pandas(4) (1) | 2024.01.31 |
Baekjoon Training #14888 (0) | 2023.08.27 |