๋ฌธ์ :
https://programmers.co.kr/learn/courses/30/lessons/43165
๋ถ์ :
์ฌ๊ท ๋ฐฉ์์ ์ด์ฉํด์ ํ์๋ค. DFS/ BFS๋ ์ฌ๊ท or stack + visit ํ๋ณ ๋ฐฉ์์ผ๋ก ํ ์ ์๋๋ฐ ์ด๋ฒ ๋ฌธ์ ๋ ์ฌ๊ท๊ฐ ๋ ์ง๊ด์ ์ผ ๊ฒ ๊ฒ ๊ฐ์์ ์ฌ๊ท ๋ฐฉ์์ผ๋ก ์ ๊ทผํ๋ค. ์ค์ํ ๊ฒ์ ์ฌ๊ท ์ข ๋ฃ ์กฐ๊ฑด์ด๋ค. ์ด ์์์ ์ซ์๋งํผ depth๋ฅผ ๋ด๋ ค๊ฐ๋ค๋ฉด ๋น ์ ธ๋์จ๋ค.
์ฒ์์ -๋ก dfs๋ฅผ ๋๋ depth๋ฅผ ์ ์ฆ๊ฐ์์ผ์ฃผ๋ ์๋ฌธ์ด์๋๋ฐ ์ ์ฌ๊ท์์ return ์ ์์ ์ ๋ฃจํธ ๋ ธ๋๋ก ๋์์ค๊ธฐ ๋๋ฌธ์ ๋ง์ฐฌ๊ฐ์ง๋ก depth + 1 ํด์ฃผ์ด์ผ ํ๋ค.
ํํฌ์ ๊ธ์จ๋ ๋ฐฉ๋ฌธ ์์๋ค !!
c++ ์ฝ๋ :
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int cnt = 0;
void dfs(vector<int> numbers, int target, int sum, int depth){
if(depth == numbers.size()){ // ์ข
๋ฃ ์กฐ๊ฑด
if(sum == target){
cnt++;
}
return;
}else {
dfs(numbers, target, sum + numbers[depth], depth+1);
dfs(numbers, target, sum - numbers[depth], depth+1);
}
}
int solution(vector<int> numbers, int target) {
dfs(numbers, target, 0, 0);
return cnt;
}
๊ฒฐ๊ณผ :
'Algorithm๐ฐ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] Swift 2018 ์นด์นด์ค ๋ด์ค ํด๋ฌ์คํฐ๋ง implementation (0) | 2022.04.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] Swift 2020 ์นด์นด์ค ์ธํด์ญ ํคํจ๋ ๋๋ฅด๊ธฐ (0) | 2022.04.08 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ stack (0) | 2022.03.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ฐ์ฅ ํฐ ์ STL(sort) (0) | 2022.03.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํํธ์ง 2021 ์นด์นด์ค ์ธํด์ญ STL(set) (0) | 2021.09.09 |
๋๊ธ