오답노트
프로그래머스 2단계 - 타켓넘버 본문
https://programmers.co.kr/learn/courses/30/lessons/43165?language=cpp
코딩테스트 연습 - 타겟 넘버
n개의 음이 아닌 정수들이 있습니다. 이 정수들을 순서를 바꾸지 않고 적절히 더하거나 빼서 타겟 넘버를 만들려고 합니다. 예를 들어 [1, 1, 1, 1, 1]로 숫자 3을 만들려면 다음 다섯 방법을 쓸 수
programmers.co.kr
- 문제파악
정수 배열과 타겟 넘버가 주어진다. 정수의 배열을 적절히 더하거나 빼서 타겟넘버를 만들 수 있는 경우의 수를 구하여라
- 정답
BFS/DFS 로 구분되어 있긴한데 굳이 그렇게 안풀고 그냥 재귀함수로 풀었다.
시간복잡도도 엄청 여유로운편..
#include <string>
#include <vector>
using namespace std;
vector<int> vec;
int answer;
int t;
void func(int k, int sum)
{
if(k == vec.size())
{
if(sum == t)
answer++;
return;
}
func(k+1,sum+vec[k]);
func(k+1,sum-vec[k]);
}
int solution(vector<int> numbers, int target) {
vec = numbers;
t = target;
func(0,0);
return answer;
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
[BFS] BOJ 2606번 바이러스 (0) | 2022.06.18 |
---|---|
프로그래머스 2단계 - 소수 찾기 (0) | 2022.06.17 |
[투 포인터] BOJ 2003번 수들의 합2 (0) | 2022.06.11 |
[투 포인터] BOJ 1644번 소수의 연속합 (0) | 2022.06.11 |
[투 포인터] BOJ 1806번 부분합 - 오답노트 (0) | 2022.06.11 |