[programmers]level 2-ターゲット番号(lang:swift)
5783 ワード
ターゲット番号
問題の説明
n個の非負の整数がある.順序を変更せずにこれらの整数を適切に追加または減算してターゲット番号を作成したいと思います.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
せいげんじょうけん
与えられた数字の個数は2個または20個以上である.
各数字は1または50以下の自然数です.
ターゲット番号が1または1000以下の自然数です.
I/O例
I/O例#1
問題の例を以下に示します.
I/O例#2
================================================================私が書いたコード
問題の説明
n個の非負の整数がある.順序を変更せずにこれらの整数を適切に追加または減算してターゲット番号を作成したいと思います.たとえば、[1,1,1,1,1,1]で数値3を作成するには、次の5つの方法があります.
-1+1+1+1+1 = 3
+1-1+1+1+1 = 3
+1+1-1+1+1 = 3
+1+1+1-1+1 = 3
+1+1+1+1-1 = 3
使用可能な数値の配列番号、ターゲット番号のターゲットをパラメータとして指定したときに、適切に数値を加算して減算して、ターゲット番号を作成する方法の数を返します.せいげんじょうけん
与えられた数字の個数は2個または20個以上である.
各数字は1または50以下の自然数です.
ターゲット番号が1または1000以下の自然数です.
I/O例
numbers target return
[1, 1, 1, 1, 1] 3 5
[4, 1, 2, 1] 4 2
I/O例説明I/O例#1
問題の例を以下に示します.
I/O例#2
+4+1-2+1 = 4
+4-1+2-1 = 4
2つの方法があるため、2を返します.================================================================
import Foundation
/*
[1, 1, 1, 1, 1] 3 5
[4, 1, 2, 1] 4 2
*/
func subCount(_ numbers:[Int], _ target: Int) -> Int{
var tempTarget: Int = target
var tempNumbers: [Int] = numbers
var count = 0
if numbers.isEmpty {
if target == 0 {
return 1
} else {
return 0
}
}
tempTarget -= tempNumbers[0]
tempNumbers.remove(at: 0)
count += subCount(tempNumbers, tempTarget)
tempTarget = target
tempNumbers = numbers
tempTarget += tempNumbers[0]
tempNumbers.remove(at: 0)
count += subCount(tempNumbers, tempTarget)
return count
}
func solution(_ numbers:[Int], _ target:Int) -> Int {
return subCount(numbers, target)
}
Reference
この問題について([programmers]level 2-ターゲット番号(lang:swift)), 我々は、より多くの情報をここで見つけました https://velog.io/@palinyee12/Programmers-level-2-타겟-넘버-lang-Swiftテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol