File tree Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Expand file tree Collapse file tree 1 file changed +31
-0
lines changed Original file line number Diff line number Diff line change 1+ const combinationSum = function ( candidates , target ) {
2+ const result = [ ] ;
3+ const path = [ ] ;
4+
5+ const dfs = function ( candidate , residual ) {
6+ if ( residual < 0 ) return ;
7+
8+ path . push ( candidate ) ;
9+
10+ if ( residual === 0 ) {
11+ result . push ( [ ...path ] ) ; //그냥 path 넣어주면 뒤에서 path 바뀔 때 result에 들어간 path도 같이 바뀜
12+ path . pop ( ) ;
13+ return ;
14+ }
15+
16+ for ( let i = 0 ; i < candidates . length ; i ++ ) {
17+ if ( candidates [ i ] >= candidate )
18+ //작은 애들 빼주는 건 이미 앞에서 했을 것이므로 큰 애들만 빼주면 됨
19+ dfs ( candidates [ i ] , residual - candidates [ i ] ) ;
20+ }
21+
22+ path . pop ( ) ;
23+ } ;
24+
25+ for ( let i = 0 ; i < candidates . length ; i ++ ) {
26+ //맨 처음에는 candidate이 없기 때문에 초기 조건 세팅할 때 candidate 넣어줘야 함
27+ dfs ( candidates [ i ] , target - candidates [ i ] ) ;
28+ }
29+
30+ return result ;
31+ } ;
You can’t perform that action at this time.
0 commit comments