본문 바로가기
파이썬알고리즘

Programmers Summer/Winter Coding(~2018) 소수 만들기

by zho 2021. 8. 25.

https://programmers.co.kr/learn/courses/30/lessons/12977

 

코딩테스트 연습 - 소수 만들기

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

programmers.co.kr


○ 문제 풀이


def solution(nums):
    from itertools import combinations
    import math
    def find(n):
      if n == 1:
        return False
      for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
          return False
      return True
    count = 0
    a = list(combinations(nums,3))
    comblist = []
    for i in range(len(a)):
      comblist.append(sum(a[i]))
      if find(sum(a[i])) == True:
        count += 1 

    return(count)

 


 

수학에서 순열과 조합으로 쓰이는 nCr을 파이썬으로 구현하여 그 값들이 소수인지 아닌지 판단하는 함수를 이용하여 해결.

 


○ 새롭게 배운 점

1) 수학에서 순열과 조합으로 쓰이는 nCr을 파이썬으로 구현하여 그 값들이 소수인지 아닌지 판단하는 함수를 이용.

ex) from itertools import combinations 이용 -> a = list(combinations(nums, 3)) 

nums list에서 3개를 뽑아 만든다는 것이다. 파이썬에서의 list(combination(n,r)) =  nCr  이다.


프로그래머스는 백준 문제보다는 퀄리티가 좋은 문제들이 많은 것 같다.. 한 문제 한 문제 풀 때마다 많이 배운다.

 

728x90