๋ฌธ์ ๋งํฌ
https://programmers.co.kr/learn/courses/30/lessons/43165
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ํ๊ฒ ๋๋ฒ
n๊ฐ์ ์์ด ์๋ ์ ์๋ค์ด ์์ต๋๋ค. ์ด ์ ์๋ค์ ์์๋ฅผ ๋ฐ๊พธ์ง ์๊ณ ์ ์ ํ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋ค๋ ค๊ณ ํฉ๋๋ค. ์๋ฅผ ๋ค์ด [1, 1, 1, 1, 1]๋ก ์ซ์ 3์ ๋ง๋ค๋ ค๋ฉด ๋ค์ ๋ค์ฏ ๋ฐฉ๋ฒ์ ์ธ ์
programmers.co.kr
์ฃผ์ด์ง ์ซ์ ๋ฐฐ์ด์ ์๋ ์ซ์๋ฅผ ๊ฐ๊ฐ ๋ํ๊ฑฐ๋ ๋นผ์ ํ๊ฒ ๋๋ฒ๋ฅผ ๋ง๋๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์ .
ํ์ด
์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ํด๋ณด์์ผํ๋ค.
ํ์ฌ ์ซ์๋ฅผ value๋ผ๊ณ ํ์ ๋ value๊ฐ์ numbers๋ฐฐ์ด์ ์๋ ์์์ ๊ฐ numbers[i] ๋ฅผ ๋ํ๊ฑฐ๋ ๋นผ๊ฑฐ๋ 2๊ฐ์ง ๊ฒฝ์ฐ๋ก ์๊ฐํ ์ ์๋ค. ๋ชจ๋ ์ซ์๋ฅผ ์ฌ์ฉํด์ผํ๋ค๊ณ ํ์ผ๋ฏ๋ก ๋ํ๊ฑฐ๋ ๋นผ๊ฑฐ๋ ๋๊ฐ์ง ๊ฒฝ์ฐ๋ง ์๊ฐํ๋ค. ๋ํ ๋ชจ๋ ์ซ์๋ฅผ ์ฐ๊ธฐ์ ์ target ๋๋ฒ๋ฅผ ์์ฑํ๋ฉด ์ด๋๋ ๊ฒฝ์ฐ์ ์๋ก ์๊ฐํ์ง ์๋๋ค.
์ด๋ value์ ์ด๊ธฐ๊ฐ์ 0์ด๋ค.
์ฌ๊ทํจ์์ ๊น์ด(depth)๊ฐ ๋ฐฐ์ด์ ์๋ ์ซ์์ ์ด ๊ฐ์์ ๊ฐ์ ๋, ๋ชจ๋ ์ซ์๋ฅผ ์ด์ฉํ๋ค๋ ๋ป์ด๋ค.
์ด๋ ํ์ฌ value๊ฐ target๊ณผ ๊ฐ์ผ๋ฉด answer๋ฅผ +1 ํด์ฃผ๊ณ ์๋๋ฉด ๊ทธ๋ฅ ๋ฆฌํดํ๋ค.
|
#include <string>
#include <vector>
using namespace std;
void dfs(int depth, vector<int> numbers, int value, int target, int &answer, int N){
if(depth == N){
if(value == target)
answer++;
return;
}
dfs(depth + 1, numbers, value + numbers[depth], target, answer, N); //๋ํ๊ฑฐ๋
dfs(depth + 1, numbers, value - numbers[depth], target, answer, N); //๋นผ๊ฑฐ๋
}
int solution(vector<int> numbers, int target) {
int answer = 0;
dfs(0, numbers, 0, target, answer, numbers.size());
return answer;
}
|
cs |
'ํ๋ก๊ทธ๋๋จธ์ค > 2๋จ๊ณ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ตฌ๋ช ๋ณดํธ (0) | 2022.06.23 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ์กฐ์ด์คํฑ (0) | 2022.06.22 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ํ๋ฆฐํฐ (0) | 2022.06.15 |
[ํ๋ก๊ทธ๋๋จธ์ค Lv2] : ๊ธฐ๋ฅ๊ฐ๋ฐ (0) | 2022.06.15 |