소수 만들기_프로그래머스_파이썬

  • 사전지식
    • combinations
  • combinations : 말그대로 콤비네이션을 활용하는 함수입니다.
from itertools import combinations    
cmb = list(combinations([1,2,7,6,4],3)) 
cmb
[(1, 2, 7),
 (1, 2, 6),
 (1, 2, 4),
 (1, 7, 6),
 (1, 7, 4),
 (1, 6, 4),
 (2, 7, 6),
 (2, 7, 4),
 (2, 6, 4),
 (7, 6, 4)]
cmb = list(combinations([1,2,7,6,4],2)) 
cmb
[(1, 2),
 (1, 7),
 (1, 6),
 (1, 4),
 (2, 7),
 (2, 6),
 (2, 4),
 (7, 6),
 (7, 4),
 (6, 4)]

  • 나의 풀이
def is_prime(x):
    count = 0
    for i in range(2,x+1):
        if x%i==0:
            count+=1
    return count
            

def solution(nums):
    answer = []
    for i in range(len(nums)):
        for j in range(i+1, len(nums)):
            for k in range(j+1, len(nums)):
                if nums[i]+nums[j]+nums[k] not in answer:
                    answer.append(nums[i]+nums[j]+nums[k])
    final = 0
    for i in answer:
        if is_prime(i) == 1:
            final+=1
    return final
print(solution([1,2,7,6,4]))
4
  • 다른 사람 풀이
from itertools import combinations          


def is_prime_number(num):
    if num==0 or num==1:
        return False
    else:
        for n in range(2, (num//2)+1):    
            if num%n == 0:
                return False
        
        return True

def solution(nums):
    answer = 0
    cmb = list(combinations(nums,3))        
    for arr in cmb:
        if is_prime_number(sum(arr)):      
            answer += 1                     
    
    return answer
print(solution([1,2,7,6,4]))
4

Comments