[2023년 11월 22일]타겟 넘버(9분)

myeongrangcoding·2023년 11월 22일

프로그래머스

목록 보기
42/65

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

구현 아이디어 1분 구현 8분

풀이

재귀 넘길 때 sum을 넘기게 바꿀 예정.

#include <string>
#include <vector>

// +, - 로 구성된 배열을 만들면 된다.
int check[20], result;

using namespace std;

void DFS(int L, int e, const vector<int>& numbers, int target)
{
    if(L == e)
    {
        int sum = 0;
        for(int i = 0; i < e; ++i)
            sum += (numbers[i] * check[i]);
        
        if(target == sum) ++result;
    }
    else
    {
        check[L] = 1;
        DFS(L + 1, e, numbers, target);
        check[L] = -1;
        DFS(L + 1, e, numbers, target);
    }
}

int solution(vector<int> numbers, int target) {
    int answer = 0;
    
    DFS(0, numbers.size(), numbers, target);
    
    return answer = result;
}

풀이

#include <string>
#include <vector>

// +, - 로 구성된 배열을 만들면 된다.
int check[20], result;

using namespace std;

void DFS(int L, int e, int sum, const vector<int>& numbers, int target)
{
    if(L == e)
    {
        if(target == sum) ++result;
    }
    else
    {
        DFS(L + 1, e, sum + numbers[L], numbers, target);
        DFS(L + 1, e, sum - numbers[L], numbers, target);
    }
}

int solution(vector<int> numbers, int target) {
    int answer = 0;
    
    DFS(0, numbers.size(), 0, numbers, target);
    
    return answer = result;
}
profile
명랑코딩!

1개의 댓글

comment-user-thumbnail
2023년 11월 22일

안녕하세요 :) 국비지원 부트캠프 엘리스트랙입니다! 오늘도 개발 공부 열심히 하고 계시군요! 멋지십니다 :)
혹시 신입으로 개발 공부하면서 기술면접에 대한 대비가 막막하시다면, 이번 기술면접 특강도 관심 가져보시면 좋을 것 같아 댓글로 행사 안내드려요~

프론트/ 백엔드 모두 실력있고, 실제 면접관으로 활동하고 계신 개발자 코치님께서 진행하시니 참여해 보세요> https://festa.io/events/4389

그럼 오늘도 화이팅입니다!🙇🏻‍♀️💪🏻

답글 달기