Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

처음 n개 자연수의 세제곱합을 구하는 Python 프로그램

이 글에서는 주어진 문제를 해결하기 위한 접근 방식과 해결 방법을 알아보겠습니다.

문제 정의

입력값 n이 주어졌을 때, 다음과 같은 급수의 합을 n번째 항까지 출력해야 합니다.

1³ + 2³ + 3³ + 4³ + … + n³

이 문제는 크게 두 가지 방법으로 해결할 수 있습니다.

  • 반복문을 이용한 브루트 포스(Brute-force) 방식
  • n개 자연수의 세제곱합에 대한 수학 공식 활용

방법 1: 반복문으로 각 항을 더하여 계산

1부터 n까지 숫자를 하나씩 순회하면서 각 항의 세제곱 값을 누적하는 방식입니다. 직관적이고 이해하기 쉽지만, 시간 복잡도가 O(n)이라는 점을 기억해야 합니다.

예제 코드

def sumOfSeries(n):
    sum = 0
    for i in range(1, n+1):
        sum += i*i*i
    return sum

# 실행 함수
n = 3
print(sumOfSeries(n))

출력 결과

36

n = 3일 때, 1³ + 2³ + 3³ = 1 + 8 + 27 = 36이므로 올바른 결과가 출력됩니다.

방법 2: 수학 공식을 이용한 계산

자연수의 세제곱합에는 이미 유도된 잘 알려진 공식이 있습니다. 이 공식을 사용하면 반복 없이 한 번의 연산으로 결과를 얻을 수 있어 시간 복잡도가 O(1)로 매우 효율적입니다.

Sum = (n * (n + 1) / 2) ** 2

즉, 처음 n개 자연수의 합(n(n+1)/2)을 제곱하면 세제곱합과 같다는 흥미로운 성질을 이용합니다.

예제 코드

def sumOfSeries(n):
    x = (n * (n + 1) / 2)
    return int(x * x)

# 메인
n = 3
print(sumOfSeries(n))

출력 결과

36

마무리

이 글에서는 처음 n개 자연수의 세제곱합을 계산하는 두 가지 방법을 살펴보았습니다. 작은 입력값에는 반복문 방식도 충분하지만, 입력 크기가 커질수록 수학 공식을 활용한 O(1) 방식이 훨씬 효율적입니다. 문제 상황에 맞게 적절한 방법을 선택하는 것이 중요합니다.