학습 자료
분할 정복으로 리스트의 합 구하기 해설
주어진 정수 리스트의 모든 요소들의 합을 분할 정복(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
이 챕터의 강의 · 자주 등장하는 코딩 퀴즈 유형 연습하기
- 1. 코딩 퀴즈 - 썩은 사과 찾기
- 2. 썩은 사과 찾기 해설
- 3. 코딩 퀴즈 - 재귀적으로 리스트의 합 구하기
- 4. 재귀적으로 리스트의 합 구하기 해설
- 5. 코딩 퀴즈 - 1, 2, 3 더하기
- 6. 1, 2, 3 더하기 해설
- 7. 코딩 퀴즈 - 일차원 배열로 변환하기
- 8. 일차원 배열로 변환하기 해설
- 9. 코딩 퀴즈 - 분할 정복으로 리스트의 합 구하기
- 10. 분할 정복으로 리스트의 합 구하기 해설
- 11. 코딩 퀴즈 - 체육복 문제
- 12. 체육복 문제 해설
- 13. 코딩 퀴즈 - 목표값보다 큰 합을 가진 정수 리스트
- 14. 목표값보다 큰 합을 가진 정수 리스트 해설
- 15. 코딩 퀴즈 - 여행 경로 찾기
- 16. 여행 경로 찾기 해설
학습 자료
AI 튜터
디자인
업로드
수업 노트
즐겨찾기
도움말