-
프로그래머스 - 타겟 넘버알고리즘 문제 풀이 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)) } }
반응형'알고리즘 문제 풀이' 카테고리의 다른 글
프로그래머스 - 단어 변환 (0) 2021.01.02 프로그래머스 - 네트워크 (0) 2020.12.17 프로그래머스 - 이중우선순위큐 (0) 2020.11.07 프로그래머스 - 디스크 컨트롤러 (0) 2020.10.28 프로그래머스 - 더 맵게 (0) 2020.09.07