728x90
1. 의도와 이유: 주어진 배열의 숫자를 더하거나 빼서 목표값을 만들기 위한 모든 가능한 조합을 찾는것. 2. 코드 동작 로직: 코드는 재귀 함수를 통해 모든 가능한 조합을 찾는다.
|
해당 문제는 재귀함수를 사용하여 target에 도달하는 숫자 조합을 찾아서 return하는 문제이다.
나는 재귀함수 findCombination함수를 호출했다. 해당 함수는 현재의 인덱스와 현재까지의 합을 추적하며, 각 숫자에 대해 더하거나 빼는 모든 가능한 경우의 수를 조사한다.
재귀 호출이 진행되면서 숫자 배열의 모든 요소를 처리하게 되는데, 만약 현재의 합이 목표값과 일치한다면 1을 반환하고, 그렇지 않으면 0을 반환한다.
findCombination함수내에서 현재 숫자를 더하거나 빼는 두 가지 경우를 따져야하는데,
이 두 경우를 재귀적으로 처리하고, 그 결과를 합쳐서 최종적인 유효한 조합의 수를 구한다.
예를들어 주어진 숫자의 배열 numbers= [1, 1, 1, 1, 1] 이고, target이 3일때,
findCombinations 함수를 통해 현재 인덱스와 현재까지의 합을 추적하면서 모든 가능한 경우의 수를 탐색한다.
재귀 호출이 진행됨에 따라 각 숫자를 더하거나 빼는 경우를 고려하며, 숫자 배열의 모든 요소가 처리되었을 때, 현재의 합이 목표값과 일치하는지 확인한다.
- findCombinations([1, 1, 1, 1, 1], 3, 0, 0) 호출
- 현재 인덱스: 0, 현재까지의 합: 0
- 0번째 숫자(1)을 더하거나 빼는 경우를 탐색
- findCombinations([1, 1, 1, 1, 1], 3, 1, 1) 호출
- 현재 인덱스: 1, 현재까지의 합: 1
- ...
- findCombinations([1, 1, 1, 1, 1], 3, 1, -1) 호출
- 현재 인덱스: 1, 현재까지의 합: -1
- ...
- 1번째 숫자(1)을 더하거나 빼는 경우를 탐색
- findCombinations([1, 1, 1, 1, 1], 3, 2, 1) 호출
- 현재 인덱스: 2, 현재까지의 합: 1
- ...
- findCombinations([1, 1, 1, 1, 1], 3, 2, -1) 호출
- 현재 인덱스: 2, 현재까지의 합: -1
- ...
이런 식으로 각 숫자를 더하거나 빼는 모든 가능한 조합을 탐색하면서, 목표값과 일치하는 경우를 찾아낼 수 있다.
최종적으로는 이런 경우의 수를 합쳐서 리턴한다.
728x90
'TIL > kotlin 알고리즘' 카테고리의 다른 글
kotlin 프로그래머스 lv2 2022 KAKAO BLIND RECRUITMENT주차 요금 계산 (0) | 2024.03.18 |
---|---|
kotlin 프로그래머스 lv2 k진수에서 소수 개수 구하기 (0) | 2024.03.15 |
kotlin 프로그래머스 lv2 피로도 (0) | 2024.03.14 |
kotlin 프로그래머스 lv2 프로세스 (0) | 2024.03.14 |
kotlin 프로그래머스 lv2 기능개발 (0) | 2024.03.13 |