잡다한 시도/코테 준비는 하는거니?

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

GGOBOOGI 2021. 7. 5. 17:30
반응형

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

문제 이해

할 수 있는게 +, - 밖에 없는 상황에서 +, -를 나열할 수 있는 모든 경우를 테스트해보는게 아닐까... 싶다.

 

나의 풀이

int search(vector<int> &numbers, int target, int curr_idx, int curr_value)
{
    if(numbers.size() == curr_idx)
    {
        if(target == curr_value)
            return 1;
        else
            return 0;
    }
    
    return search(numbers, target, curr_idx + 1, curr_value + (-1)*numbers[curr_idx]) + search(numbers, target, curr_idx + 1, curr_value + numbers[curr_idx]);
}

int solution(vector<int> numbers, int target) {
    int answer = 0;
    
    answer = search(numbers, target, 0, 0);
    
    return answer;
}

몰라.. 그냥 귀찮아서 완전탐색 해버렸다.

 

할 수 있는 모든 경우를 탐색해 보면서 최종 값이 target 값과 같으면 1을, 그렇지 않으면 0을 리턴하도록 했다.

 

1 개수를 모두 세면 끝!

반응형