프로그래머스

[프로그래머스] 소수 만들기 파이썬

띵지니어 2022. 2. 21. 20:08

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

 

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

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

programmers.co.kr

코딩테스트 연습

 

from itertools import combinations

def is_prime(n):
    if n == 1:
        return False
    for i in range(2, int(n**0.5) + 1): 
        if n % i == 0:
            return False
    return True
    
def solution(nums):
    answer = 0
    result = list(combinations(nums, 3))
    for i in result:
        if is_prime(sum(i)):
            answer += 1
    
    return answer

 

처음엔 사실 3중 for 문을 사용했었는데 라이브러리 사용하는 게 더 나은 풀이라고 생각하여 combinations을 활용했다.

 

 

  • combinations
    r개의 데이터를 뽑아 순서를 고려하지 않고 나열하는 모든 경우(조합)

 

입출력 예 1 을 보면 

이런 식으로 조합해서 나온다고 이해하면 된다.

따라서 저렇게 튜플을 뽑아주고 더한 게 소수냐 아니냐 판별만 해주면 된다.