Guidelines

λΆ„ν•  μ •λ³΅μœΌλ‘œ 리슀트의 ν•© κ΅¬ν•˜κΈ° ν•΄μ„€

주어진 μ •μˆ˜ 리슀트의 λͺ¨λ“  μš”μ†Œλ“€μ˜ 합을 λΆ„ν•  정볡(divide and conquer) λ°©λ²•μœΌλ‘œ κ³„μ‚°ν•˜λŠ” ν•¨μˆ˜λ₯Ό μž‘μ„±ν•©λ‹ˆλ‹€.

이 방법은 μž¬κ·€ ν•¨μˆ˜λ₯Ό μ‚¬μš©ν•˜μ—¬ κ΅¬ν˜„λ©λ‹ˆλ‹€.


ν•¨μˆ˜ κ΅¬ν˜„

  1. κΈ°λ³Έ ν•¨μˆ˜ solution:

    • μ‚¬μš©μžμ—κ²Œ μž…λ ₯ 받은 λ¦¬μŠ€νŠΈμ™€ 리슀트의 μ‹œμž‘ 및 끝 인덱슀λ₯Ό recursive_sum ν•¨μˆ˜μ— μ „λ‹¬ν•©λ‹ˆλ‹€.
  2. μž¬κ·€ ν•¨μˆ˜ 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