코딩테스트 연습
타겟 넘버 Lv2
프로그래머스 깊이/너비 우선 탐색(DFS/BFS)
2021-12-12 10:10
프로그래머스 > 깊이/너비 우선 탐색(DFS/BFS) > 타겟 넘버
AUTHOR: SungwookLE
DATE: ‘21.12/12PROBLEM: 문제링크
LEVEL: Lv2
1. 예전에 한번 풀었었음..
- 한번 풀었던 문제이기도 하고, 풀이가 기억나는 게 있어서 풀기는 함
- 숫자를 더하고 빼는 두가지 경우에 대해서 모든 경우를 다 계산하다가, 마지막에
sum
과target
이 맞는지 비교하여 답 출력 - 알고리즘은
Brute Force
처럼 모든 경우를 탐색하는 것과 동일하다.
2. 코드
- 코드
#include <string>
#include <vector>
void bfs(int iter, int n, int sum, int target, vector<int> number, int& answer){
if (iter == n){
if (sum == target){
answer +=1;
}
}
else{
//더하는 케이스 1)
sum += number[iter];
bfs(iter+1, n, sum, target, number, answer);
//원상복귀
sum -= number[iter];
//빼는 케이스 2)
sum -= number[iter];
bfs(iter+1, n, sum, target, number, answer);
}
}
int solution(vector<int> numbers, int target) {
int answer = 0;
int iter = 0, n = numbers.size();
int sum = 0;
bfs(iter, n, sum, target, numbers, answer);
return answer;
}