이 문제에서는 하나의 숫자 n이 주어지며, 우리의 목표는 첫 N개의 자연수의 평균을 구하는 것입니다.
평균(Average)이란 모든 수의 합을 수의 총 개수로 나눈 값으로 정의됩니다. 따라서 첫 N개의 자연수의 평균은 '첫 N개 자연수의 합 ÷ N'이 됩니다.
문제 이해를 위한 예시
입력 : N = 23
출력 : 12
풀이 설명 −
1 + 2 + 3 + ... + 22 + 23 = 276
276 / 23 = 12
해결 접근 방법
평균을 구하기 위해 기본적인 평균 공식을 활용합니다.
Average = sum(N) / N
Average = (1 + 2 + 3 + ... + N) / N
여기서 첫 N개의 자연수의 합은 잘 알려진 등차수열 합 공식으로 구할 수 있습니다.
sum(N) = N × (N + 1) / 2
이 공식을 평균 식에 대입하면 다음과 같이 정리됩니다.
Average = [N × (N + 1) / 2] / N = (N + 1) / 2
즉, 반복문 없이 단순히 (N + 1) / 2만 계산하면 되므로 시간 복잡도는 O(1)로 매우 효율적입니다.
구현 예제
아래 프로그램은 위 해결 방법이 실제로 동작하는 모습을 보여줍니다.
#include <iostream>
using namespace std;
float calcAverage(int n) {
return (float)(((float)n + 1) / 2);
}
int main() {
int N = 45;
cout << "첫 " << N << "개 자연수의 평균은 " << calcAverage(N);
return 0;
}
실행 결과
첫 45개 자연수의 평균은 23
이처럼 수학적 공식을 활용하면 N이 아무리 커져도 상수 시간 안에 평균을 계산할 수 있어, 실전 코딩 테스트에서도 유용하게 활용할 수 있습니다.