프로그래머스-소수구하기 (itertools)자료구조+알고리즘2021. 6. 18. 16:38
Table of Contents
https://programmers.co.kr/learn/courses/30/lessons/12977
문제 설명
주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.
제한사항
- nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
- nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
입출력 예
nums | result |
[1,2,3,4] | 1 |
[1,2,7,6,4] | 4 |
풀이
itertools 라이브러를 사용해서 조합을 구한다.
itertools.combinations(리스트, 부분집합 원소 수)를 사용해서 원하는 원소 수를 가진 겹치지 않는 부분집합들을 구할 수 있다
import itertools
a = [1, 2, 3, 4, 5]
b = list(itertools.combinations(a, 3))
print(b)
//[(1, 2, 3), (1, 2, 4), (1, 2, 5), (1, 3, 4), (1, 3, 5), (1, 4, 5), (2, 3, 4), (2, 3, 5), (2, 4, 5), (3, 4, 5)]
답
import itertools
def solution(nums):
count = 0
for i in map(sum, itertools.combinations(nums, 3)):
a = True
for j in range(2, i):
if i % j == 0:
a = False
break
if a:
count += 1
return count
'자료구조+알고리즘' 카테고리의 다른 글
순열, 조합 (0) | 2022.03.18 |
---|---|
정규 표현식, re 모듈 (0) | 2021.06.19 |
백준-1012 유기농 배추 (BFS) (0) | 2021.06.09 |
백준-1260번 DFS와 BFS (extendleft) (0) | 2021.06.09 |
BFS, DFS (0) | 2021.06.09 |
@덕구공 :: Duck9s'
주니어 개발자에욤
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!