[プログラマ]ターゲット番号
9247 ワード
に答える関数は、それほど多くのパラメータ を伝達する必要はありません.移管の変数計算で移管すると、そこまで簡略化できるようです.
優秀なコード
answer = 0
def dfs(dest, dest_len, n, total, sign, target):
if sign == '+':
total += dest[n]
elif sign == '-':
total -= dest[n]
n = n + 1
if n == dest_len:
if total == target:
global answer
answer += 1
return
dfs(dest, dest_len, n, total, '+', target)
dfs(dest, dest_len, n, total, '-', target)
def solution(numbers, target):
dest_len = len(numbers)
dfs(numbers, dest_len, 0, 0, '+', target)
dfs(numbers, dest_len, 0, 0, '-', target)
return answer
ポストanswer = 0
def dfs(dest, dest_len, n, total, target):
if n == dest_len:
if total == target:
global answer
answer += 1
return
dfs(dest, dest_len, n + 1, total+dest[n], target)
dfs(dest, dest_len, n + 1, total-dest[n], target)
def solution(numbers, target):
dest_len = len(numbers)
dfs(numbers, dest_len, 1, numbers[0], target)
dfs(numbers, dest_len, 1, -numbers[0], target)
return answer
優秀なコード
def solution(numbers, target):
if not numbers and target == 0 :
return 1
elif not numbers:
return 0
else:
return solution(numbers[1:], target-numbers[0]) + solution(numbers[1:], target+numbers[0])
最終的には以下のように簡略化することができる.Reference
この問題について([プログラマ]ターゲット番号), 我々は、より多くの情報をここで見つけました https://velog.io/@taekkim/프로그래머스-타겟-넘버テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol