본문 바로가기
Sketch (Programming Language)/Python

프로그래머스 - 소수 만들기

by 생각하는 이상훈 2024. 5. 2.
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