알고리즘 풀이

[알고리즘] 프로그래머스 | 소수 만들기

째깍단 2023. 8. 15. 14:15

소수만들기

답: 

더보기

식 하나로 만들기

from itertools import combinations

def solution(nums):
    result = 0
    n_list = list((combinations(nums, 3)))
    for number in n_list:
        num = sum(number)
        new_num = int(num ** 0.5) + 1
        for i in range(2, new_num):
            if num % i == 0:
                break
        else:
            result += 1 

    return result

 

 함수로 나누기 

from itertools import combinations

def is_prime(n):
    new_num = int(n**0.5+1)
    for i in range(2, new_num):
        if n % i == 0:
            return False
    return True

def solution(nums):
    answer = 0
    n_list = list(combinations(nums,3))
    
    for num in n_list:
        if is_prime(sum(num)):
            answer += 1
    return answer

 

 

문제 분석 및 해석

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 수 구하기

nums = [숫자가 들어있는 배열]

결과 = 소수나오는 숫자

 

>> 풀이생각

 

itertools에 combinations를 사용해 3개를 묶은 경우의 수를 만들고

해당 combinations객체를 합한 후에 소수인지 검사한다

 

: 소수를 검사하는 방법 - 2 ~ 제곱근까지의 수로 나누어보기 

 

한 식에 모아서 쓰는 방법은 없을까 생각,

for else문의 조건문을 사용하였다.

 

리뷰.

for else의 사용방법을 알아볼 수 있었다

 

if 조건에따라 break를 하고

break를 할 경우 else가 실행되지 않고,

break를 하지 않으면 else가 실행되는 것에 대해 이해하게 되었다.