https://school.programmers.co.kr/learn/courses/30/lessons/12977
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다
from itertools import combinations as c
def solution(nums):
answer = 0
sums = []
모든 조합을 구하기 위해서 itertools을 임포트한다.
def solution(nums):
answer = 0
sums = []
for num in c(nums, 3):
print(sum(num))
각 조합의 합계를 구한다.
def solution(nums):
answer = 0
sums = []
for num in c(nums, 3):
sums.append(sum(num))
print(sums)
구해진 합계를 sums 리스트에 저장한다.
def is_prime(n):
if n <= 1:
return False
if n % 2 == 0:
return False
i = 3
while i ** 2 <= n:
if n % i == 0:
return False
i += 2
return True
sums안의 정수들이 소수인지 아닌지 판정하는 함수를 작성한다.
def solution(nums):
answer = 0
sums = []
for num in c(nums, 3):
sums.append(sum(num))
for n in sums:
if is_prime(n):
answer += 1
return answer
작성한 소수판정 함수를 이용해서 sums리스트에서 소수의 갯수를 세면 완료!
'코딩일기' 카테고리의 다른 글
SQL 코드카타 147 - Salaries (0) | 2024.07.17 |
---|---|
SQL 코드카타 146 - Employee Names (0) | 2024.07.17 |
SQL 코드카타 145 - Higher Than 75 Marks (0) | 2024.07.16 |
SQL 코드카타 144 - Weather Observation Station 12 (0) | 2024.07.16 |
SQL 코드카타 143 - Weather Observation Station 11 (0) | 2024.07.16 |