Algorithm(알고리즘)/Divide and Conquer

1) 1부터 nn까지 더하기 (divide and conquer)

고로케 2021. 5. 13.
반응형

1. 1부터 nn까지 더하는 예시

절반씩 계속 나눠서 결과를 더하는 방법

def consecutive_sum(start, end):
    # base case
    if end == start:
        return start

    # 부분 문제를 반으로 나눠주기 위해서 문제의 정중앙을 정의한다 (Divide)
    mid = (start + end) // 2

    # 각 부분 문제를 재귀적으로 풀고(Conquer), 부분 문제의 답을 서로 더한다(Combine).
    return consecutive_sum(start, mid) + consecutive_sum(mid + 1, end)

# 테스트
print(consecutive_sum(1, 10))
print(consecutive_sum(1, 100))
print(consecutive_sum(1, 253))
print(consecutive_sum(1, 388))

결과 : 55 5050 32131 75466



반응형

댓글