728x90
문제
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예
numsresult
[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 check(a, b, c):
total = a + b + c
for i in range(2, total):
if total % i == 0 :
return False
return True
def solution(nums):
answer = 0
A = list(combinations(nums, 3))
for i in A:
if check(i[0], i[1], i[2]):
answer += 1
return answer
학교에서 파이썬을 배울 때 combinations를 배우지 않아서 인터넷을 참고해서 문제를 풀었다.
https://eda-ai-lab.tistory.com/493 이분의 글을 참고해서 풀었다. (참고해서 풀다보니 코드가 똑같다...ㅎㅎ)
이분의 코드를 조금설명하자면 check함수 부분에서 total의 값이 소수인지 아닌지 알기위해 2부터 total까지 나누어
만약 나머지가 0이 된다면 그것은 소수가 아니다. 그렇기에 False, 소수이면 if문을 빠져나와 True가 된다.
combinations 내장함수는 다음 글에서 더 자세히 알아보자!!
728x90
'코딩테스트' 카테고리의 다른 글
프로그래머스 K번째 수(Python) (0) | 2021.05.17 |
---|---|
프로그래머스 신규 아이디(Python) (0) | 2021.05.17 |
프로그래머스 내적(Python) (0) | 2021.05.16 |
프로그래머스 완주하지 못한 선수(Python) (0) | 2021.05.16 |
프로그래머스 가운데 글자 찾기(JS, Python) (0) | 2021.05.16 |