python/알고리즘 문제풀이

[프로그래머스 | 파이썬3] 소수 만들기_combinations활용

빛날희- 2021. 5. 17. 00:22

https://programmers.co.kr/learn/courses/30/lessons/12977

 

코딩테스트 연습 - 소수 만들기

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

programmers.co.kr

해당 문제는 itertools의 combinations함수를 활용하여 풀었다. 

 

 


from itertools import combinations
def solution(nums):
    cnt= 0
    for i in list(combinations(nums,3)):
        
        # 조합 튜플 합계 계산
        sums= sum(i)
        
        # 합계가 소수인지 아닌지 판별한 후 소수이면 +1, 소수가 아니면 +0
        for j in range(1,sums-1):
            if sums % (j+1) != 0: step=1
            else: step=0; break
        cnt += step
        
    return cnt

* combinations함수는 첫번째 파라미터로 들어온 배열에서 두번째 파라미터로 들어온 수만큼의 조합을 튜플형태로 만들어준다. 만들어진 조합을 list로 묶어 사용할 수 있다.

 

* 소수는 자기자신과 1로 밖에 나누어지지 않는 수를 말한다. 

 

list(combinations([1,2,3], 2))

을 실행하면 [(1,2),(2,3),(1,3)]을 반환해준다.