프로그래머스: 소수 만들기
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
입출력 예
num | result |
---|---|
[1,2,3,4] | 1 |
[1,2,7,6,4] | 4 |
입출력 예 설명
입출력 예 #1
[1,2,4]를 이용해서 7을 만들 수 있습니다.
입출력 예 #2
[1,2,4]를 이용해서 7을 만들 수 있습니다.
[1,4,6]을 이용해서 11을 만들 수 있습니다.
[2,4,7]을 이용해서 13을 만들 수 있습니다.
[4,6,7]을 이용해서 17을 만들 수 있습니다.
from itertools import combinations #소수 판별하는 함수 def count_num(num): #소수는 1과 자기자신으로만 나눠지는 숫자이므로 0,1인 경우 false if num==0 or num==1: return False else: for n in range(2, (num//2)+1): # math를 사용하지 않고 num//2+1 사용 if num%n == 0: return False return True #소수 개수 찾는 함수 def solution(array): count =0 #itertools의 조합을 사용하여 3개의 수가 들어가는 조합식을 만든 후 tuple형태를 list 형태로 변환 comb = list(combinations(array,3)) for i in comb: # count_num의 값이 true면 count를 하나씩 늘려줌 if count_num(sum(i)): count +=1 return count
먼저 itertools를 이용하여 조합을 만든 후 tuple을 list로 변환시킨다. 그 다음 소수인지 아닌지 판별하는 함수를 작성한다. 소수의 경우 1과 자기자신으로만 나눠지기 때문에 다른 숫자로 나눠지면 false를 아니면 True를 리턴한다. 그 다음 만약 소수를 판별하는 함수가 true일 경우 그 숫자는 소수이기 때문에 count를 1씩 늘려준다.