PROGRAMMERS Python Lv1. 소수만들기

최대 1 분 소요

이번 문제는 소수만들기이다.

정답 코드는 다음과 같다.

def solution(nums):
    answer = 0
    li = []
    for i in range(0, len(nums)-2):
        for j in range(i+1, len(nums)):
            for k in range(j+1,len(nums)):
                num = nums[i] + nums[j] + nums[k]
                li.append(num)
    for num in li:
        cnt = 0
        for i in range(2, num):
            if num % i == 0:
                cnt += 1
                break
        if num > 1 and cnt == 0:
            answer += 1
    return answer

이번 문제의 핵심은 세 개의 숫자를 뽑아 조합을 만들고,

더해진 숫자가 소수인지 판별하는 것이다.

숫자 3개를 뽑기 위해 3개의 for문을 사용했다.

i , j , k 를 각각 0 , i + 1 , j + 1로 하면 겹치지 않고

숫자를 조합할 수 있다.

이를 새로운 리스트에 일단 append 시키고,

리스트 원소들을 자신을 제외한 수들로 나눴을 때

1보다 큰 수 중에 나눠지지 않는다면 그 수는 소수인 것이다.

소수가 나올 때마다 answer에 1씩 더해주면 답이다.

이번 문제는 앞 부분의 소수 찾기 문제와 유사한 부분이 많다.

어떻게 숫자 3개를 뽑을 건지 찾는 것이 핵심이다.

댓글남기기