숫자 n이 주어졌을 때, 1부터 n까지 자연수 각각의 제곱값에 대한 평균을 구하는 문제입니다. 풀이 과정은 다음 세 단계로 정리할 수 있습니다.
- 1부터 n까지 각 자연수의 제곱을 구합니다.
- 구한 제곱값들을 모두 더합니다.
- 그 합을 n으로 나누면 평균이 완성됩니다.
예시
입력: 3
출력: 4.666667
풀이 설명
1² + 2² + 3² = 1 + 4 + 9 = 14
14 ÷ 3 = 4.666667
즉, n = 3일 때 각 수를 제곱하여 더하면 14가 되고, 이를 개수인 3으로 나눈 값 4.666667이 바로 구하고자 하는 평균입니다.
수학적 공식
반복문 없이도 공식을 이용해 빠르게 계산할 수 있습니다. 자연수 제곱의 합은 다음과 같습니다.
Σ i² = n(n+1)(2n+1) / 6
따라서 제곱의 평균은 위 식을 n으로 나눈 (n+1)(2n+1) / 6이 됩니다.
C++ 구현 예제
#include<iostream>
using namespace std;
int main() {
long n, i, sum = 0, d;
n = 3;
for(i = 1; i <= n; ++i) {
d = i * i; // 각 수의 제곱 계산
sum += d; // 제곱값 누적
}
cout << sum / n; // 평균 출력
return 0;
}
위 코드는 반복문을 통해 1부터 n까지의 제곱값을 차례로 더한 뒤, 마지막에 n으로 나누어 평균을 출력하는 방식입니다. 시간 복잡도는 O(n)이며, 앞서 소개한 공식을 사용하면 O(1)로 더욱 효율적으로 계산할 수 있습니다.