등비수열이란 무엇인가?
이 문제에서는 세 개의 입력값이 주어집니다. 첫 번째는 a로 등비수열의 첫째 항(first term), 두 번째는 r로 공비(common ratio), 세 번째는 n으로 합을 구하려는 항의 개수입니다.
등비수열(Geometric Series)은 연속된 두 항 사이의 비율이 항상 일정하게 유지되는 수열입니다. 입력값 a, r, n을 이용하여 등비수열의 각 항인 a, ar, ar2, ar3, ar4, … 을 생성하고, 그 전체 합인 a + ar + ar2 + ar3 + ar4 + … 을 계산하는 것이 목표입니다.
입력 예시 1
a = 1
r = 0.5
n = 5
출력 결과
1.937500
입력 예시 2
a = 2
r = 2.0
n = 8
출력 결과
510.000000
문제 해결 접근 방법
첫째 항 a, 공비 r, 항의 개수 n을 모두 입력받습니다.
반복문을 사용하여 수열의 모든 항을 차례대로 더함으로써 등비수열의 합을 계산합니다.
알고리즘
시작 float sumgeometric(float a, float r, int n) 함수 정의 단계 1 → sum = 0 으로 선언 및 초기화 단계 2 → 반복문 실행: i = 0 부터 i < n 까지, 매 반복마다 i 1씩 증가 sum = sum + a 로 설정 a = a * r 로 설정 단계 3 → sum 반환 int main() 함수 정의 단계 1 → int a = 1 선언 및 초기화 단계 2 → float r = 0.5 선언 및 초기화 단계 3 → int n = 5 선언 및 초기화 단계 4 → sumgeometric(a, r, n) 결과 출력 종료
C 코드 구현 예시
#include <stdio.h>
// 등비수열의 합을 계산하는 함수
float sumgeometric(float a, float r, int n){
float sum = 0;
for (int i = 0; i < n; i++){
sum = sum + a;
a = a * r;
}
return sum;
}
int main(){
int a = 1; // 첫째 항
float r = 0.5; // 공비
int n = 5; // 항의 개수
printf("%f", sumgeometric(a, r, n));
return 0;
}실행 결과
위 코드를 컴파일하고 실행하면 다음과 같은 출력 결과를 확인할 수 있습니다.
1.937500
코드 동작 원리 자세히 살펴보기
위 코드는 각 반복마다 현재 항 a를 누적합 sum에 더한 뒤, a에 공비 r을 곱하여 다음 항을 만드는 방식으로 동작합니다. 예제 입력(a = 1, r = 0.5, n = 5)의 경우 반복 과정은 다음과 같습니다.
i = 0 : sum = 1.0, 다음 항 a = 0.5
i = 1 : sum = 1.5, 다음 항 a = 0.25
i = 2 : sum = 1.75, 다음 항 a = 0.125
i = 3 : sum = 1.875, 다음 항 a = 0.0625
i = 4 : sum = 1.9375, 최종 결과 1.937500
이 알고리즘은 항의 개수만큼 한 번씩 순회하므로 시간 복잡도는 O(n)이며, 추가 메모리를 거의 사용하지 않아 공간 복잡도는 O(1)입니다.
참고: 등비수열 합 공식 활용하기
반복문 대신 수학 공식을 사용하면 O(1) 시간에 합을 구할 수도 있습니다. 공비 r이 1이 아닐 때 등비수열 n항까지의 합은 다음과 같습니다.
Sn = a × (rn − 1) / (r − 1)
다만 공식을 적용할 경우 r = 1인 경우(모든 항이 a와 같음)에는 합이 a × n이라는 점을 별도로 처리해야 하므로, 일반적인 프로그래밍 연습 문제에서는 위처럼 반복문을 사용하는 방법이 더 직관적이고 안전합니다.