File tree Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Expand file tree Collapse file tree 1 file changed +33
-0
lines changed Original file line number Diff line number Diff line change 1+ //
2+ // Untitled.swift
3+ // Algorithm
4+ //
5+ // Created by 안세훈 on 4/14/25.
6+ //
7+
8+ class Solution {
9+ func combinationSum( _ candidates: [ Int ] , _ target: Int ) -> [ [ Int ] ] {
10+ var middleArray : [ Int ] = [ ] // 연산중인 배열
11+ var resultArray : [ [ Int ] ] = [ ] // 결과 배열
12+
13+ func recursive( startIndex : Int , Sum : Int ) { //재귀함수. 시작index, 합계
14+ if Sum == target{ //합계가 목표와 같다면
15+ resultArray. append ( middleArray) //결과 배열로 연산배열 append
16+ return //종료
17+ }
18+ if Sum > target{ // 합계가 목표보다 크다면,
19+ return //그대로 리턴
20+ }
21+ //핵심
22+ for i in startIndex..< candidates. count{ // 인덱스 별로 for loop
23+ middleArray. append ( candidates [ i] ) //연산중인 배열에 startIndex의 원소 추가
24+ recursive ( startIndex: i, Sum: Sum+ candidates[ i] ) //재귀실행. i번째 인덱스와, i번째 인덱스의 원소 + 지금까지의 합을 더해서 재귀 함수로 리턴.
25+ middleArray. removeLast ( ) // 백트래킹을 위해 맨 뒤 원소 삭제.
26+ }
27+ }
28+
29+ recursive ( startIndex: 0 , Sum: 0 ) // 최초 재귀함수 호출. 초기화를 위해 0번째 인덱스와 합계 0부터 시작
30+ print ( resultArray) // 디버깅을 위한 출력문
31+ return resultArray // 리턴은 결과 배열
32+ }
33+ }
You can’t perform that action at this time.
0 commit comments