인천의 자유인

[Python] 소수 만들기 -프로그래머스(Lv.1) 본문

Python/Python코딩테스트

[Python] 소수 만들기 -프로그래머스(Lv.1)

Youngook 2024. 9. 9. 08:02
728x90
반응형

 
 
 
 

나의 문제 풀이

import itertools
def solution(nums):
    a = list(itertools.combinations(nums,3))
    answer = 0
    for i in a:
        i = sum(i)
        count = 0
        for j in range(2, int(i/2)+1):
            if i%j == 0:
                break
            count +=1
        if count == int(i/2)-1:
            answer+=1
    return answer

 
먼저 import itertools은 제가 정리한 글이 있으니 잘 모르신다면 보고 오시는 것을 추천드립니다.
https://y01112.tistory.com/87
 
itertools.combinations(nums,3)을 하면 중복되지 않게 3개를 뽑을 수 있습니다. 
이것을 한 뒤에는 바로 리스트 a에 있는 각 요소의 합이 소수인지를 판별하고 그것이 맞다면 answer에 1씩 쌓이게 됨을 알 수 있습니다.
i%j가 0일 경우 break를 하는 이유는 소수는 1과 자기 자신을 제외한 모든 숫자들은 나눠지지 않는 것이 당연하기 때문입니다. 나누어지지 않으면 count를 1씩 증가시킵니다. 이렇게 해서 한 요소가 끝까지 한번도 나누어 지지 않았을 경우(소수일 경우) count는 int(i/2)-1이 쌓이게 되는데 그러면 answer를 1씩 증가시키는 것이죠
 
최종적으로 다 구할 경우 더해진 answer을 return하면 프로그램은 종료가 됩니다.
 

728x90
반응형