2108번 - 통계학
출처: 백준 알고리즘
주소: www.acmicpc.net/problem/2108
2108번: 통계학
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
www.acmicpc.net
정렬과 관련된 문제이다.
문제를 보면 산술평균, 중앙값, 최빈값, 범위 순으로 구해야 한다.
산술평균은 입력을 받을 때마다 하나씩 저장을 하고 n개로 나눠서 구한다.
중앙값은 전체 수를 정렬을 한 후에 구해야 하는데, 그 다음에 최빈값 또한 구해야 하므로
입력 받은 수가 얼마나 등장했는 지를 저장하기 위한 배열을 만든다.
이 배열의 인덱스는 입력 받은 수를 의미하고 배열 값은 입력 받은 수가 몇번 등장했는 지를 나타낸다.
또한 이 배열을 이용하여 중앙값을 구하고자 한다.
중앙값은 n개의 값이 들어오면 (n + 1) / 2의 위치의 값이 해당한다. (n이 홀수라고 가정하기 때문이다.)
마지막으로 범위를 구해야하는데, 입력을 받을 때 입력 받은 값이 최소값보다 작으면 최소값 변수에 저장하고
최대값보다 크면 최대값 변수에 저장한다. (최대값 변수 - 최소값 변수)를 통해 범위를 구한다.
산술평균을 출력할 때 소수점 이하 첫째 자리에서 반올림한 값을 출력하기 위해 반올림 함수를 사용하고
입력을 받으면서 저장한 값을 double로 형 변환을 하고 출력을 한다.
내가 짠 소스는 아래와 같다.
앞으로도 일주일에 2~3개씩 공부한 것을 올리도록 노력해야겠다.