▶ 문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
▶ 제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
▶ 입출력 예
[1,2,3,4] | 1 |
[1,2,7,6,4] | 4 |
▶ 내가 짠 코드
from itertools import combinations
import math
def solution(nums):
answer = 0
random_list = list(combinations(nums,3))
for i in random_list:
x = sum(i)
if prime(x):
answer += 1
return answer
def prime(x):
for i in range(2, int(math.sqrt(x)+1)):
if x % i == 0:
return False
return True
소수임을 판별하는 prime함수를 따로 작성하였다.
이때 math를 import 하여 약수 개수의 법칙을 사용하여 소수임을 판별한다.
그리고 넘겨받은 nums 리스트에서 중복을 허용하지 않고 3개의 숫자를 조합하여 뽑는 것은 combinations를 사용하였다.
▶ 참고사항
- combinations의 사용
리스트 안에서의 여러 조합을 구할 때 파이썬 기본 라이브러리인 itertools를 사용하는 방법이 여러개 있다.
from itertools import product
from itertools import permutations
from itertools import combinations
product : 두개 이상의 리스트에서의 모든 조합을 계산한다.
permutations: 리스트 하나에서의 모든 조합 (중복 o)
combinations: 리스트 하나에서의 모든 조합 (중복 x)
세 가지 모두 tuple 형식으로 값을 리턴한다.
728x90
'자료구조 & 알고리즘 & cs > CodingTest' 카테고리의 다른 글
프로그래머스 LEVEL1 - K번째수 (0) | 2022.06.10 |
---|---|
프로그래머스 LEVEL1 - 완주하지 못한 선수 (0) | 2022.06.09 |
프로그래머스 LEVEL1 - 내적 (0) | 2022.06.08 |
프로그래머스 LEVEL1 - 음양 더하기 (0) | 2022.06.08 |
프로그래머스 LEVEL 1 - 없는 숫자 더하기 (0) | 2022.06.08 |