https://programmers.co.kr/learn/courses/30/lessons/43165
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수
programmers.co.kr
풀이
재귀함수를 쓰는 DFS로 구현
using namespace std;
int dfs(vector<int> numbers, int target, int index, int num);
int solution(vector<int> numbers, int target) {
int answer = 0;
return dfs(numbers, target, 0, 0);
}
int dfs(vector<int> numbers, int target, int index, int num) {
int size = numbers.size();
if (index==size) {
return num == target ? 1 : 0;
}
else {
return dfs(numbers, target, index+1, num+numbers[index]) + dfs(numbers, target, index+1, num-numbers[index]);
}
}
'코딩테스트 > 문제풀이' 카테고리의 다른 글
[프로그래머스] 가장 먼 노드 C++ (bfs) (0) | 2022.05.05 |
---|---|
[프로그래머스] N으로 표현 C++ (DP) (0) | 2022.05.05 |
[프로그래머스] 카카오프렌즈 컬러링 북 C++ (dfs) (0) | 2022.05.03 |
[프로그래머스] 크레인 인형뽑기 게임 C++ (stack) (0) | 2022.05.03 |
[프로그래머스] 키패드 누르기 C++ (0) | 2022.05.03 |