λΆν μ 볡μΌλ‘ 리μ€νΈμ ν© κ΅¬νκΈ° ν΄μ€
μ£Όμ΄μ§ μ μ 리μ€νΈμ λͺ¨λ μμλ€μ ν©μ λΆν μ 볡(divide and conquer)
λ°©λ²μΌλ‘ κ³μ°νλ ν¨μλ₯Ό μμ±ν©λλ€.
μ΄ λ°©λ²μ μ¬κ· ν¨μ
λ₯Ό μ¬μ©νμ¬ κ΅¬νλ©λλ€.
ν¨μ ꡬν
-
κΈ°λ³Έ ν¨μ
solution:- μ¬μ©μμκ² μ
λ ₯ λ°μ 리μ€νΈμ 리μ€νΈμ μμ λ° λ μΈλ±μ€λ₯Ό
recursive_sum
ν¨μμ μ λ¬ν©λλ€.
- μ¬μ©μμκ² μ
λ ₯ λ°μ 리μ€νΈμ 리μ€νΈμ μμ λ° λ μΈλ±μ€λ₯Ό
-
μ¬κ· ν¨μ
recursive_sum:-
Base Case μ²λ¦¬
:-
리μ€νΈκ° λΉμ΄μμ κ²½μ° (
start > end
), 0μ λ°νν©λλ€. -
리μ€νΈμ νλμ μμλ§ μμ κ²½μ° (
start == end
), ν΄λΉ μμλ₯Ό λ°νν©λλ€.
-
-
λΆν κ³Όμ
:- 리μ€νΈλ₯Ό μ€κ° μ§μ μμ λ λΆλΆμΌλ‘ λλλλ€.
-
μ 볡 κ³Όμ
:- κ° λΆλΆμ ν©μ μ¬κ·μ μΌλ‘ κ³μ°ν©λλ€.
-
κ²°ν© κ³Όμ
:- κ³μ°λ λ λΆλΆμ ν©μ ν©μ°νμ¬ λ°νν©λλ€.
-
λͺ¨λ² λ΅μ
def solution(numbers): # κΈ°λ³Έ ν¨μ return recursive_sum(numbers, 0, len(numbers) - 1) def recursive_sum(numbers, start, end): # Base case μ²λ¦¬ if start > end: return 0 if start == end: return numbers[start] # λΆν κ³Όμ mid = (start + end) // 2 # μ 볡 κ³Όμ left_sum = recursive_sum(numbers, start, mid) right_sum = recursive_sum(numbers, mid + 1, end) # κ²°ν© κ³Όμ return left_sum + right_sum
μ¬μ© μμ
μ
μΆλ ₯ μμ
print(solution([1, 2, 3, 4, 5])) # μΆλ ₯: 15
Guidelines
AI Tutor
Publish
Design
Upload
Notes
Favorites
Help