Dfs 사용 시 for 문 안씀 생각. for 문을 쓴다면 모든 경우를 확인할 경우
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<int> num;
vector<bool> visited;
int tarNum;
int DfsSum(int index, int sum)
{
int ans = 0;
if(index == num.size())
{
if(sum == tarNum)
{
return 1;
}
return 0;
}
ans += DfsSum(index + 1, sum + num[index]);
ans += DfsSum(index + 1, sum - num[index]);
return ans;
}
int solution(vector<int> numbers, int target) {
int answer = 0;
tarNum = target;
num = numbers;
visited = vector<bool>(numbers.size(), false);
answer += DfsSum(1, numbers[0]);
answer += DfsSum(1, -numbers[0]);
return answer;
}
'코딩 테스트' 카테고리의 다른 글
백준 회전하는 큐 (0) | 2024.06.11 |
---|---|
귤 고르기 (0) | 2024.05.20 |
프로그래머스 피로도 (0) | 2024.03.01 |
프로그래머스 1차 비밀지도 (0) | 2024.02.14 |
프로그래머스 k진수에서 소수 개수 구하기 (0) | 2024.02.14 |