EunGyeongKim

[summer/winter] 소수 만들기 본문

코딩테스트/programmers

[summer/winter] 소수 만들기

EunGyeongKim 2022. 9. 22. 07:24

더 많은 코드 (https://github.com/EunGyeongKim/TIL)

 

GitHub - EunGyeongKim/TIL: Today I Learne

Today I Learne. Contribute to EunGyeongKim/TIL development by creating an account on GitHub.

github.com

문제 링크

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

1. 문제 설명

주어진 숫자 중 3개의 수를 더했을 때 소수가 되는 경우의 개수를 구하려고 합니다. 숫자들이 들어있는 배열 nums가 매개변수로 주어질 때, nums에 있는 숫자들 중 서로 다른 3개를 골라 더했을 때 소수가 되는 경우의 개수를 return 하도록 solution 함수를 완성해주세요.


2. 제한사항

  • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
  • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.

3. 입출력 예

nums result
[1,2,3,4] 1
[1,2,7,6,4] 4

4. 코드

import math
import itertools as it

def find_prime(x):
        # 2부터 x의 제곱근까지의 모든 수를 확인하며
    for i in range(2, int(math.sqrt(x)) + 1):
        # x가 해당 수로 나누어떨어진다면
        if x % i == 0:
            return False # 소수가 아님
    return True # 소수임

def solution(nums):
    sum_prime = 0
    answer = list(map(sum, it.combinations(nums, 3)))
    for a in answer:
        if find_prime(a):
            sum_prime += 1
    return sum_prime

'코딩테스트 > programmers' 카테고리의 다른 글

[연습문제]평균 구하기  (0) 2022.09.22
[연습문제]하샤드 수  (1) 2022.09.22
[연습문제]두 정수 사이의 합  (0) 2022.09.21
[완전탐색]모의고사  (0) 2022.09.21
[월간 코드]내적  (0) 2022.09.21
Comments