알고리즘 문제 풀이
프로그래머스 - 타겟 넘버
블린더르
2020. 12. 9. 00:00
풀이
/*
* 2020-12-08
* https://programmers.co.kr/learn/courses/30/lessons/43165
*/
var answer = 0
fun targetNumber(numbers: IntArray, target: Int): Int {
answer = 0
addNumber(0, numbers, 0, target)
return answer
}
tailrec fun addNumber(sum: Int, numbers: IntArray, index: Int, target: Int) {
if (numbers.count() == index) {
if (sum == target)
answer++
} else {
addNumber(sum + numbers[index], numbers, index + 1, target)
addNumber(sum + numbers[index] * -1, numbers, index + 1, target)
}
}
테스트
class DfsBfsTest {
companion object {
@JvmStatic
fun targetNumberArgs(): Stream<Arguments> = Stream.of(
Arguments.of(intArrayOf(1, 1, 1, 1, 1), 3, 5),
Arguments.of(intArrayOf(1, 2, 1, 1, 1), 4, 4)
)
}
@ParameterizedTest
@MethodSource("targetNumberArgs")
fun testTargetNumber(numbers: IntArray, target: Int, answer: Int) {
assertEquals(answer, targetNumber(numbers, target))
}
}
반응형