최대 1 분 소요

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

주어진 리스트의 원소 중 3개를 선택해서 더한 값이 소수인 경우의 수를 구하는 문제이다..

내 풀이

def solution(nums):
    answer = 0
    length = len(nums)
    for i in range(length - 2) :
        for j in range(i + 1, length - 1) :
            for k in range(j + 1, length) :
                num = nums[i] + nums[j] + nums[k]
                if num % 2 :
                    is_prime = True
                    for l in range(3, int(num ** 0.5 + 1), 2) :
                        if num % l == 0 :
                            is_prime = False
                            break
                    if is_prime :
                        answer += 1
    return answer

다른 사람의 풀이

from itertools import combinations as cb

def solution(nums) :
    answer = 0
    for a in cb(nums, 3) :
        cand = sum(a)
        for j in range(2, cand) :
            if cand % j == 0 :
                break
		else :
            answer += 1
	return answer

댓글남기기