λ¬Έμ μ€λͺ
nκ°μ μμ΄ μλ μ μκ° μμ΅λλ€. μ΄ μλ₯Ό μ μ ν λνκ±°λ λΉΌμ νκ² λλ²λ₯Ό λ§λ€λ €κ³ ν©λλ€. μλ₯Ό λ€μ΄ [1, 1, 1, 1, 1]λ‘ μ«μ 3μ λ§λ€λ €λ©΄ λ€μ λ€μ― λ°©λ²μ μΈ μ μμ΅λλ€.
-1+1+1+1+1 = 3 +1-1+1+1+1 = 3 +1+1-1+1+1 = 3 +1+1+1-1+1 = 3 +1+1+1+1-1 = 3
μ¬μ©ν μ μλ μ«μκ° λ΄κΈ΄ λ°°μ΄ numbers, νκ² λλ² targetμ΄ λ§€κ°λ³μλ‘ μ£Όμ΄μ§ λ μ«μλ₯Ό μ μ ν λνκ³ λΉΌμ νκ² λλ²λ₯Ό λ§λλ λ°©λ²μ μλ₯Ό return νλλ‘ solution ν¨μλ₯Ό μμ±ν΄μ£ΌμΈμ.
μ νμ¬ν
- μ£Όμ΄μ§λ μ«μμ κ°μλ 2κ° μ΄μ 20κ° μ΄νμ λλ€.
- κ° μ«μλ 1 μ΄μ 50 μ΄νμΈ μμ°μμ λλ€.
- νκ² λλ²λ 1 μ΄μ 1000 μ΄νμΈ μμ°μμ λλ€.
μ μΆλ ₯ μ
numbers target return
[1, 1, 1, 1, 1] | 3 | 5 |
νμ΄
DFS μκ³ λ¦¬μ¦μ νμ©ν λ¬Έμ μ΄λ€.
- sum = νμ¬ μμ ν©(λͺ©ν : νκ² λλ²)
- count = μ£Όμ΄μ§ μ«μλ₯Ό μ¬μ©ν νμ
- μ’ λ£ μ‘°κ±΄ : countκ° μ£Όμ΄μ§ μ«μμ κ°μμ λμΌνκ³ , sumμ΄ νκ² λλ²μ κ°μ λ
sum + numbers[count]μ sum - numbers[count] λ μ’ λ₯λ‘ λλ μ λ€μ targetNumber ν¨μλ₯Ό νΈμΆνλ€. (μλ₯Ό λνλ κ²½μ°, λΉΌλ κ²½μ°)
μ΄ λ, countλ νμ μ¦κ°νλ€!!
#include <string>
#include <vector>
using namespace std;
int answer = 0;
void targetNumber(vector<int> numbers, int target, int sum, int count){
if (count == numbers.size()){
if (sum == target) answer++;
return;
}
targetNumber(numbers, target, sum+numbers[count], count+1); // μ€λ₯Έμͺ½
targetNumber(numbers, target, sum-numbers[count], count+1); // μΌμͺ½
}
int solution(vector<int> numbers, int target) {
targetNumber(numbers, target, 0, 0);
return answer;
}
'β¨ Algorithm' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€/C++] 1260λ² : DFSμ BFS (0) | 2021.08.24 |
---|---|
[κ°λ ] DFSμ BFS (0) | 2021.08.24 |
[νλ‘κ·Έλλ¨Έμ€/C++] 체μ‘볡(Greedy) (0) | 2021.08.24 |
[λ°±μ€/C++] 11399λ² : ATM (0) | 2021.08.16 |
[λ°±μ€/C++] 11047λ² : λμ 0 (0) | 2021.08.16 |
λκΈ