-
[Algorithm] Python 1부터 n까지의 합Programming/Algorithm 2021. 9. 23. 23:47
* 본 문제는 코드잇에서 제공하는 문제이므로 자세한 문제 내용은 적지 않겠습니다.
[문제]
1부터 n까지의 합을 divide and conquer(분할정복)으로 풀기
[해설]
consecutive_sum(1, 10)
1을 start, 10을 end 로 생각했을 때, 두 case를 base case로 만들 수 있는 경우를 생각한다.
재귀함수를 생각했을 때, start값과 end값이 같게되면, 더 이상 연산이 필요 없어지므로, 그대로 start 또는 end값을 return 하면되는 base case가 충족된다.
부분문제를 반으로 나누어졌을 때, recursive하게 풀어 그 return 값들을 서로 더하며 답을 찾아간다.
[코드]
def consecutive_sum(start, end): if start == end: # 더 이상의 부분문제가 나눌 것이 없을 때 하나만 남은걸 return return start center = (start + end) // 2 return consecutive_sum(start, center) + consecutive_sum(center + 1, end) print(consecutive_sum(1, 10)) print(consecutive_sum(1, 100)) print(consecutive_sum(1, 253)) print(consecutive_sum(1, 388))
'Programming > Algorithm' 카테고리의 다른 글
[Algorithm - 프로그래머스] Python 신규 아이디 추천 (0) 2021.10.20 [Algorithm - 프로그래머스] Python 로또의 최고 순위와 최저 순위 (0) 2021.10.19 [Algorithm] Python 강남역 폭우 (0) 2021.09.22 [Algorithm] 순열 (0) 2020.04.24 [Algorithm] 조합 (0) 2020.04.24