문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/43165

 

프로그래머스

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

programmers.co.kr

 문제 설명 

 

문제는 vector로 여러가지 숫자를 입력받고 vector 의 숫자들을 더하거나 빼서 타겟  숫자로 만드는것.

처음에 놓쳤던 것은 vector의 숫자를 모두다 이용해야되는건데 중간에 target  넘버가 나오면 종료 시켜서 조금 헤맸다.

 

 알고리즘 

 

1. 재귀함수를 이용한 완탐으로 +와 -경우 두가지로 나누어 진행

 

 코드 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
#include<iostream>
#include<vector>
 
using namespace std;
 
int result = 0;
 
void func(int a, int cnt, vector<int> numbers, int target) {
    
    //종료부
    if (cnt == numbers.size()) {
        //타겟과 일치하면 결과값 +1
        if (a == target) result++;
        return;
    }
    
    //양수로 보내기
    func(a + numbers[cnt], cnt + 1, numbers, target); 
 
    //음수로 보내기
    func(a - numbers[cnt], cnt + 1, numbers, target);
 
}
 
int solution(vector<int> numbers, int target) {
    func(00,numbers, target);
    int answer = result;
    return answer;
}
 
cs
 
 
 

'c++ > 프로그래머스' 카테고리의 다른 글

프로그래머스: 단어변환  (0) 2020.04.02
프로그래머스 : 네트워크  (0) 2020.04.02
프로그래머스 : k번째수  (0) 2020.03.27
프로그래머스 : 전화 번호 목록  (0) 2020.03.27
프로그래머스 : 기능개발  (0) 2020.03.27
ariz1623