プログラマSummer/Winter Coding(~218)-小数を作成



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

問題の説明


与えられた数字のうち3つの数字を小数に加算すると、個数を求めてみます.数値を持つ配列numsをパラメータとする場合は、solution関数を完了してnumsの3つの異なる数値の小数を返します.

せいげんじょうけん


numsに含まれる数字の個数は3個または50個を超えない.
numsの各要素は1000より大きい自然数であり、重複する数字は含まれていない.

に答える

def solution(nums):
    answer = 0
    for num1 in range(len(nums)-2):
        for num2 in range(num1+1, len(nums)-1):
            for num3 in range(num2+1, len(nums)):
                isPrime = True
                sum = nums[num1] + nums[num2] + nums[num3]
                if sum % 2 == 0:
                    continue
                for i in range(int(sum/2)-1 if int(sum/2) % 2 == 0 else int(sum/2), 2, -2):
                    if sum % i == 0:
                        isPrime = False
                        break
                if isPrime:
                    answer += 1

    return answer
  • 3個を抽出しsumに加えた後、
  • sumで半分に分け、偶数なら-1、奇数ならiで
  • とします.
  • iが2個減るごとに、チェックボックス
  • 他人の解答

    from itertools import combinations
    # 콤비네이션 함수로 3개를 뽑아온다 a에
    def solution(nums):
        answer = 0
        for a in combinations(nums, 3):
            sumNum = sum(a)  # 다 더한걸 가지고
            isPrime = True
            for i in range(2, sumNum): # 하나씩 그냥 다 검사함
                if sumNum % i == 0:
                    isPrime = False
                    break
            if isPrime:
                answer += 1
        return answer