본문 바로가기
알고리즘/프로그래머스

[프로그래머스] 타겟넘버 c++

by 오오오니 2023. 9. 28.

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

문제

numbers배열에 담긴 숫자들로 +,-를 사용해서 target을 만들 수 있는 경우의 수를 구하는 문제였다.

풀이

dfs를 이용해서 모든 경우의 수를 검사해주었다. 

#include <string>
#include <vector>

using namespace std;

int target_tmp,numbers_length;
vector<int> numbers_tmp;
int answer = 0;

void plus_minus(int sum ,int depth){
    if(depth==numbers_length){
        if(sum==target_tmp)
            answer++;
        return;
            
    }
    plus_minus(sum+numbers_tmp[depth],depth+1);
    plus_minus(sum-numbers_tmp[depth],depth+1);
    
}

int solution(vector<int> numbers, int target) {
    target_tmp=target;
    numbers_length=numbers.size();
    numbers_tmp=numbers;
    plus_minus(0,0);
    return answer;
}