ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 20. 소수 만들기
    Programmers 2023. 6. 24. 14:40
    728x90

    문제 설명

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

    제한사항
    • nums에 들어있는 숫자의 개수는 3개 이상 50개 이하입니다.
    • nums의 각 원소는 1 이상 1,000 이하의 자연수이며, 중복된 숫자가 들어있지 않습니다.
    from itertools import combinations
    
    def solution(nums):
        num = [sum(i) for i in list(combinations(nums, 3))]
        answer = len(num)
        for n in num:
            d = [i for i in range(2, int(n*0.5)+1) if n%i == 0]
            if len(d) != 0:
                answer -= 1
                    
        return answer

    불필요한 리스트를 선언하여 풀이하긴 했다..

    def solution(nums):
        from itertools import combinations as cb
        answer = 0
        for a in cb(nums, 3):
            cand = sum(a)
            for j in range(2, cand):
                if cand%j==0:
                    break
            else:
                answer += 1
        return answer

     

    이렇게 for-else 문을 사용해서, 불필요한 계산을 피할 수 있다. (라이브러리도 함수를 실행할 때 호출하는 것으로 해야 더 효율적일 것 같다.)

    728x90

    'Programmers' 카테고리의 다른 글

    22. 암호 만들기  (0) 2023.06.26
    21. N개의 최소공배수  (0) 2023.06.25
    19. 가장 가까운 같은 글자  (0) 2023.06.21
    18. 다음 큰 숫자  (0) 2023.06.21
    17. 이진 변환 반복하기  (0) 2023.06.20
Designed by Tistory.