문제 개요
첫째 항 a, 공차 d, 그리고 항의 개수 n이 주어졌을 때, 해당 등차수열의 n번째 항을 구하는 것이 이번 문제의 목표입니다.
프로그램을 작성하기 전에, 등차수열이 무엇인지 먼저 살펴보겠습니다.
등차수열(Arithmetic Progression)이란?
등차수열(산술 수열)은 연속된 두 항 사이의 차이가 항상 일정한 수열을 의미합니다.
예를 들어 첫째 항 a = 5, 공차 = 1이고 3번째 항을 구하고자 한다면, 수열은 5, 6, 7이 되므로 출력값은 7이 됩니다.
등차수열의 n번째 항 공식
등차수열의 각 항은 다음과 같이 표현할 수 있습니다.
AP1 = a1
AP2 = a1 + (2-1) × d
AP3 = a1 + (3-1) × d
...
APn = a1 + (n-1) × d
이를 일반화하면 n번째 항을 구하는 공식은 다음과 같습니다.
AP = a + (n − 1) × d
예제
입력: a=2, d=1, n=5
출력: 6
설명: 수열은 2, 3, 4, 5, 6이 되며, 5번째 항은 6입니다.
입력: a=7, d=2, n=3
출력: 11
문제 해결 접근 방법
- 첫째 항 A, 공차 D, 항의 개수 N을 입력받습니다.
- 공식 (A + (N − 1) × D)을 이용해 n번째 항을 계산합니다.
- 계산된 결과를 반환합니다.
이 방법은 반복문 없이 단 한 번의 산술 연산만으로 답을 구할 수 있으므로, 시간 복잡도는 O(1)로 매우 효율적입니다.
알고리즘
시작
단계 1 → 함수 int nth_ap(int a, int d, int n)
(a + (n - 1) * d) 값을 반환
단계 2 → int main()
입력값 a=2, d=1, n=5 선언 및 초기화
nth_ap(a, d, n) 함수 호출 결과 출력
종료
C 프로그램 구현
#include <stdio.h>
int nth_ap(int a, int d, int n) {
// 공식을 이용해 n번째 항 계산
// t(n) = a(1) + (n-1)*d
return (a + (n - 1) * d);
}
// 메인 함수
int main() {
// 시작 숫자
int a = 2;
// 공차
int d = 1;
// 구하고자 하는 n번째 항
int n = 5;
printf("수열의 %d번째 항 : %d\n", n, nth_ap(a, d, n));
return 0;
}
실행 결과
수열의 5번째 항 : 6
마무리
등차수열의 n번째 항은 a + (n − 1) × d라는 간단한 공식만 기억하면 누구나 쉽게 구할 수 있습니다. 위 예제처럼 함수 하나와 단순 산술 연산만으로 해결되기 때문에, 초보자가 C언어의 함수 정의와 반환값 개념을 익히기에도 좋은 예제입니다.