Skip to content

Commit c5b614d

Browse files
committed
feat: [Week 03-4] solve combination-sum
1 parent 3d25456 commit c5b614d

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

โ€Žcombination-sum/Chaedie.pyโ€Ž

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
"""
2+
Solution:
3+
์ตœ์ดˆ ํ’€์ด ๋‹น์‹œ์—” ๋‹จ์ˆœํžˆ dfs๋กœ ํ’€์—ˆ์œผ๋‚˜ ์‹œ๊ฐ„ ์ดˆ๊ณผ๋กœ ์‹คํŒจํ–ˆ์Šต๋‹ˆ๋‹ค.
4+
์ดํ›„ ํ’€์ด ์„ค๋ช…์„ ํ†ตํ•ด i ๋ฒˆ์งธ ์ˆซ์ž๋ฅผ ๋„ฃ๊ฑฐ๋‚˜ / ์•ˆ๋„ฃ๊ฑฐ๋‚˜ ๋ผ๋Š” ์กฐ๊ฑด์œผ๋กœ i๋ฅผ ๋Š˜๋ ค๊ฐ€๋„๋ก ์ง„ํ–‰ํ•˜๋Š” ๋ฐฑํŠธ๋ž˜ํ‚น์„ ํ•˜๋ฉด ๋œ๋‹ค๋Š”์ ์„ ๋ฐฐ์› ์Šต๋‹ˆ๋‹ค.
5+
์ด๋ฅผ ํ†ตํ•ด ๋ถˆํ•„์š”ํ•œ ์ค‘๋ณต์„ ์ค„์ด๊ณ  ํšจ์œจ์ ์ธ ๊ตฌํ˜„์ด ๊ฐ€๋Šฅํ•ด์ง‘๋‹ˆ๋‹ค.
6+
7+
C: len(candidates)
8+
T: target size
9+
10+
Time: O(C^T) = ๋ผ๊ณ  ์„ค๋ช…๋˜์–ด ์žˆ๋Š”๋ฐ ์†”์ฐํžˆ ์ž˜ ๋ชจ๋ฅด๊ฒ ์Šต๋‹ˆ๋‹ค.
11+
Space: O(T) = ์žฌ๊ท€๊ฐ€ ๊ฐ€์žฅ ๊นŠ์„ ๋•Œ [1,1,1,1...] T ๋งŒํผ์ด๊ธฐ ๋•Œ๋ฌธ์— O(T)
12+
"""
13+
14+
15+
class Solution:
16+
def combinationSum(self, candidates: List[int], target: int) -> List[List[int]]:
17+
result = []
18+
sol = []
19+
n = len(candidates)
20+
21+
def backtrack(i, cur_sum):
22+
if cur_sum == target:
23+
result.append(sol.copy())
24+
return
25+
if cur_sum > target or i == n:
26+
return
27+
28+
backtrack(i + 1, cur_sum)
29+
30+
sol.append(candidates[i])
31+
backtrack(i, cur_sum + candidates[i])
32+
sol.pop()
33+
34+
backtrack(0, 0)
35+
return result

0 commit comments

Comments
ย (0)