본문 바로가기
Algorithm 💫/Problem Solving

[프로그래머스] 타겟 넘버 / C++ / level2

by 돼지고기맛있다 2021. 10. 6.
반응형

✏️ 문제 링크

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

 

✏️ 문제 설명 (더보기 클릭 👆🏻)

더보기
문제 설명

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

-1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3

사용할 수 있는 숫자가 담긴 배열 numbers, 타겟 넘버 target이 매개변수로 주어질 때 숫자를 적절히 더하고 빼서 타겟 넘버를 만드는 방법의 수를 return 하도록 solution 함수를 작성해주세요.

제한사항

  • 주어지는 숫자의 개수는 2개 이상 20개 이하입니다.
  • 각 숫자는 1 이상 50 이하인 자연수입니다.
  • 타겟 넘버는 1 이상 1000 이하인 자연수입니다.

입출력 예

numbers / target / return
[1, 1, 1, 1, 1] 3 5

입출력 예 설명

문제에 나온 예와 같습니다.

 

✏️ 문제 풀이

기본 dfs 문제인데, N과 M을 이해하고 풀면 좋다!!!!

2021.09.13 - [Algorithm 💫/알고리듬(thm) 문제 모음집 🔮] - 🔮 N과 M 문제 모음집

 

🔮 N과 M 문제 모음집

✏️ 문제 [백준] - 15649번: N과 M(1) ✅ - 1~N의 자연수로 M 길이의 수열 만들기 [백준] - 15650번: N과 M(2) ✅ - 1~N의 자연수로 M 길이의 중복되지 않는 수열 만들기(조합) [백준] - 15651번: N과 M(3) ✅ -..

ssinee.tistory.com

 

✏️ 문제 코드

#include <string>
#include <vector>

using namespace std;
#define MAX 21
char cal[MAX];
int answer;
void dfs(int cur, vector<int> num, int target){
    if(cur==num.size()){
        int r=0;
        for(int i=0; i<num.size(); i++){
            if(cal[i]=='-'){
                r-=num[i];
            }else if(cal[i]=='+') r+=num[i];
        }
        if(r==target) answer++;
    }else{
        cal[cur]='+';
        dfs(cur+1, num, target);
        cal[cur]='-';
        dfs(cur+1, num, target);
    }
}
int solution(vector<int> numbers, int target) {
    answer=0;
    dfs(0, numbers, target);
    return answer;
}

 

 

 

 ⭐ if feedback and question : comment please⭐  

 

 

 

 

 

반응형

'Algorithm 💫 > Problem Solving' 카테고리의 다른 글

[백준] 13701번: 중복 제거  (0) 2021.10.05
[백준] 11811번: 데스스타 / C++  (0) 2021.10.05
[백준] 3449번: 이진수 연산/ C++  (0) 2021.10.05
[백준] 3449번: 해밍 거리  (0) 2021.10.04
[백준] 11723번: 집합  (0) 2021.10.04

댓글