728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/43165
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
발상

처음에 문제를 보고, 어떻게 하면 이걸 DFS로 풀수 있을까? 많이 고민을 했는데, 문제를 보니 '-'의 위치가 점차 뒤로가는 것을 보고 숫자를 벡터에 저장한다음 부호만 바꿔가면서 점차 진행하면 되지 않을까? 생각했다.

소스코드
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int answer = 0;
void DFS(int _size,int num,const vector<int>& number,int target)
{
if (_size == number.size())
{
if (num == target)
answer++;
}
else
{
DFS(_size + 1,num + number[_size],number,target);
DFS(_size + 1,num - number[_size],number, target);
}
}
int solution(vector<int> numbers, int target) {
DFS(0, 0, numbers,target);
return answer;
}320x100
'알고리즘 문제' 카테고리의 다른 글
| [백준] 2805번 - 나무 자르기 [C++] (1) | 2023.12.01 |
|---|---|
| [백준] 9935번 - 문자열 폭발 [C++] (1) | 2023.12.01 |
| [백준] 18352번 - 특정 거리의 도시 찾기 [C++] (0) | 2023.12.01 |
| [백준] 5639번 : 이진 검색 트리[C++] (0) | 2023.12.01 |
| [백준] 1302번 : 베스트셀러[C++] (0) | 2023.11.30 |