본문 바로가기

코딩 테스트

프로그래머스 타겟 넘버

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