문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
풀이
from itertools import combinations
def finder(n): # 소수 찾기는 외워두자!
num = set(range(2,n+1))
for i in range(2,n+1):
if i in num:
num -= set(range(2*i,n+1,i))
return num
def solution(nums):
cnt = 0
max_num = sum(nums)
arr = finder(max_num) #가장 큰 값 기준으로 소수를 모두 구함
combi_arr = list(combinations(nums,3)) # 조합 구하기 귀찮으니 함수 외워두자
num_arr = []
for i in combi_arr:
num_arr.append(sum(i)) # 조합의 합을 구함
for i in num_arr:
if i in arr: #조합의 합과 소수 비교
cnt += 1
return cnt
소수는 찾는 것이 힘들었지, 소수만 찾는다면 관련된 문제는 쉽게 풀린다.
출처
https://school.programmers.co.kr/learn/courses/30/lessons/12977
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
728x90
'Programing > 프로그래머스 오답노트' 카테고리의 다른 글
실패율 - ( dict - lambda 정리 ) (0) | 2023.09.17 |
---|---|
덧칠하기 - ( 쉽게 생각하자 ) (0) | 2023.09.17 |
소수 찾기 (0) | 2023.09.16 |
풍선 터뜨리기 (0) | 2023.09.16 |
최고의 집합 (level 3이라고 겁 먹지 말 것) (0) | 2023.09.16 |
댓글