[プログラマー]ターゲット番号Python


質問する


https://programmers.co.kr/learn/courses/30/lessons/43165
n個の非負の整数.この数字を適当に加算または減算してターゲット番号を作成したいです.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.

使用可能な数値の配列番号、ターゲット番号のターゲットをパラメータとして指定したときに、適切に数値を加算して減算して、ターゲット番号を作成する方法の数を返します.

せいげんじょうけん

  • で与えられた数字は20個未満です.
  • 各数字
  • は50より大きい自然数である.
  • 目標は自然数が1000より大きいことです.
  • I/O例


    入力


    numbers = [1,1,1,1,1]
    target = 3

    しゅつりょく


    return = 5

    [#Clone]ソリューション関数python


    ::Pythonのitertools。productを使用して、リストに表示される可能性のあるすべての状況の数を検索し、一致する値を検索します。

    from itertools import product
    
    def solution(numbers, target):
        l = [(x, -x) for x in numbers]
        s = list(map(sum, product(*l)))
      
        return s.count(target)
    ソース:プログラマの回答

    Python itertools.product


    Python itertoolsの詳細
    ex. 1)
    itertools.product('abc',repeat=2)
    #결과 값 = aa,ab,ac,ba,bb,bc,ca,cb,cc
    ex. 2)
    問題の入力をnumbers=[1,2,3,4,5]に変更すると、list(product(*l))の結果をより簡単に表示できます.

    注意:https://velog.io/@davkim1030/Python-%EC%88%9C%EC%97%B4-%EC%A1%B0%ED%95%A9-product-itertools