주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
nums | result |
---|---|
[1,2,3,4] | 1 |
[1,2,7,6,4] | 4 |
def solution(nums):
# 전체 숫자 조합 구하기
num_combination = []
for i in range(len(nums)):
for j in range(i+1, len(nums)):
for k in range(j+1, len(nums)):
num_combination.append(nums[i] + nums[j] + nums[k])
# 합성수 구하기
composition = []
for num in num_combination:
for i in range(2, num):
if num % i == 0:
composition.append(num)
break
answer = len(num_combination) - len(composition)
return answer
nums
에서 3개를 뽑는 조합을 생성하고from itertools import combinations
def solution(nums):
num_combinations = [comb for comb in combinations(nums, 3)] # 숫자 조합 리스트
composition_list = [] # 합성수 리스트
for combination in num_combinations:
num = sum(combination)
for i in range(2, num):
if num % i == 0:
composition_list.append(num)
break
answer = len(num_combinations) - len(composition_list)
return answer
itertools.combinations
를 생각했지만 combination
으로 오타를 쳐서 안됐던 것을 프로그래머스에서는 사용하지 못하는구나라고 생각해 다른 방식으로 풀었었다.itertools.combinations
를 사용해서 수정해봤다.