본문 바로가기
Algorithm/프로그래머스

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

by 2HS 2022. 3. 17.

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

 

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

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

programmers.co.kr

 

import math
from itertools import combinations as comb

def solution(nums):
    sum_list = [sum(i) for i in list(comb(nums,3))]
    answer = 0
    for x in sum_list:
        isOK = True
        for i in range(2, int(math.sqrt(x))+1):
            if x % i == 0:
                isOK = False
                break
        if isOK:
            answer += 1
    return answer

 

풀이
1. 순서가 상관이 없으니 combinations를 이용해서 세 숫자들의 합 리스트를 만든다.
2. 리스트를 전부 돌면서 (2~자기 자신의 제곱근+1)로 나누어 떨어지면 소수가 아니다.
3. isOK가 그대로 True일 경우에만 answer += 1
3. return answer