되는대로 살자

[C언어 기출문제&풀이] 분산 구하기 본문

2009~2014/C/C++

[C언어 기출문제&풀이] 분산 구하기

malu 2011. 8. 11. 21:22

프로그램 명: variation
제한시간: 1 초
  • A 반의 학생 수가 3 명 이고 , 각 학생의 수학 점수가 3,4,5
  • B 반의 학생 수가 3 명 이고 , 각 학생의 수학 점수가 1,4,7
A 반의 평균은 4 , B 반의 평균은 4 로 같다.

그런데 두 반의 점수의 흩어진 정도는 B 반이 더 크지만 평균으로는 흩어진 정도는 알수는 없다. 흩어진 정도를 측정하는 대표적인 방법이 분산(variation) 이다.

분산은 각 데이터(변량)에서 평균값을 뺀 값의 제곱의 합을 인원수로 나누는 것으로 약속한다.

  • A 반의 분산은 (3-4)^2 + (4-4)^2 + (5-4)^2 를 3 으로 나눈 값이고
  • B 반의 분산은 (1-4)^2 + (4-4)^2 + (7-4)^2 를 3 으로 나눈 값이다.

분산이 더 크다는 것은 흩어진 정도(산포도)가 더 크다는 것을 의미한다.

문제는 반의 인원수와 수학점수가 주어질 때 이 반의 수학점수의 분산을 구하는 것이다.

입력

첫 째 줄에는 인원 수 n 이 입력으로 주어진다. 다음 줄에는 n 개의 정수가 입력으로 주어진다. 각 수는 1 이상 100 이하이다.

n 은 3 이상 100 이하이다.

출력

소수 2 자리까지 출력한다.

입출력 예

입력

4 
1 2 3 4

출력

1.25
출처:dovelet

풀이 : 그냥 시키는 대로 하면 됩니다..... 
더 세세하게 들어가보자면
1. 평균을 구한다.
2. 분산을 구한다.
평균 구하는법 : 모든값을 더한 뒤 값의 수 만큼으로 나눈다.(*소수점을 저장해야함을 명시하세요)
분산 구하는법 : 위에 적힌 식대로 모든 값을 순회하면서 적용한다.