[ Programmers ] 타겟 넘버

Lutica_·2024년 7월 9일

문제

문제 접근

  • 이 문제는 가볍게 보니 완전탐색 문제이다.
  • target.length < 20... 그러므로, 별도의 최적화 기법은 쓰지 않아도 좋다.
  • 앞에서 연산한 값이 뒤의 연산값에 영향을 미친다.
  • 계산을 따라가면 일련의 트리/그래프가 나온다. 이것을 어떻게 탐색하는지에 대한 문제이다.
  • 재귀를 통한 DFS나, BFS를 써서 풀 수 있지만, 나는 리스트기반 BFS로 써서 풀어보겠다.

문제 풀이

개광

  • 일단, 계산이 안된 한 수인 0을 집어넣은 Array를 두자.
  • 이것을 돌려가면서 배열을 계속 계산시킨다.
  • 배열에 값을 넣어가며 값을 계속 갱신 시킨다.
  • 그리고 마지막에, 목표값을 찾아서 return시킨다.

코드

#include <string>
#include <vector>

using namespace std;

int solution(vector<int> numbers, int target) {
    int answer = 0;
    vector<int> rev = {0};
    for(auto i=numbers.begin();i != numbers.end(); i++)
    {
        vector<int> cal = {};
        int scal = (*i);
        for(auto a=rev.begin(); a!= rev.end() ; a++) 
        {
            int origin = (*a);
            cal.push_back(origin+scal);
            cal.push_back(origin-scal);
        }
        rev = cal;
    }

    for(auto p = rev.begin();p!=rev.end();p++)
    {
        if(target == (*p)) answer ++;
    }
    return answer;
}
profile
해보고 싶고, 하고 싶은 걸 하는 사람

0개의 댓글