YeJin's Footsteps

타켓 넘버 본문

Computer Science & Engineering/알고리즘

타켓 넘버

YeJinii 2021. 7. 7. 17:06

문제 링크

https://programmers.co.kr/learn/courses/30/lessons/43165

 

코딩테스트 연습 - 타겟 넘버

n개의 음이 아닌 정수가 있습니다. 이 수를 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수 있습니다. -1+1+1+1+1 = 3 +1-1+1+1+

programmers.co.kr

 

문제 풀이 코드

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int N=0;
int T=0;
int A=0;

void dfs(vector<int> numbers, int cnt, int sum){//N=5, T=3
    
    if(cnt==N){
        if(sum==T) A++;
        return;
    }
    else{
        dfs(numbers, cnt+1, sum+numbers[cnt]);
        dfs(numbers, cnt+1, sum-numbers[cnt]);
    }
    
}
int solution(vector<int> numbers, int target) {
    
    int answer = 0;
    
    N=numbers.size(); T=target;
    
    dfs(numbers, 0, 0);
    
    answer=A;
    
    return answer;

}

항상 느끼는 거지만 재귀 문제는 탈출 조건을 고려하는 것이 가장 중요한 것 같다. 

 

'Computer Science & Engineering > 알고리즘' 카테고리의 다른 글

네트워크  (0) 2021.07.08
등굣길  (0) 2021.07.07
정수 삼각형  (0) 2021.07.07
Algorithm Study_0703  (0) 2021.07.03
프린터  (0) 2021.07.02
Comments