BOJ 2108 통계학

Jmnote (토론 | 기여)님의 2018년 8월 22일 (수) 18:17 판

1 개요

BOJ 2108 통계학

[[분류:BOJ {{{단계}}}단계]]

  • 네가지 통계값을 구하는 문제
BOJ 단계별로 풀어보기
순번 문제 풀이

틀:BOJ 9단계 틀:BOJ 단계 푸터

2 Java

import java.io.IOException;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int size = Integer.parseInt(br.readLine());
		int arr[] = new int[size];
		int counts[] = new int[8001];
		int i, num, sum=0, min=4000, max=-4000, max_count=0;
		for(i=0; i<size; i++) {
			num = Integer.parseInt(br.readLine());
			arr[i] = num;
			sum += num;
			if( num > max ) max=num;
			if( num < min ) min=num;
			counts[4000+num]++;
			if( counts[4000+num]>max_count ) max_count = counts[4000+num];
		}
		int freq2 = 0, freq_count = 0;
		for(i=min; i<=max && freq_count<2; i++) {
			if( counts[4000+i] != max_count ) continue;
		    freq2 = i;
		    freq_count++;
		}
		Arrays.sort(arr);
		System.out.println( Math.round(1.0D*sum/size) );
		System.out.println( arr[size/2] );
		System.out.println( freq2 );
		System.out.println( max-min );   
	}
}

3 Python

import sys
import collections
N = int(input())
a = sorted(map(int,sys.stdin))
mean = (sum(a)*2+N)//N//2
median = a[N//2]
c = collections.Counter(a)
m = max(c.values())
modes = sorted(i for i in c if c[i]==m)
mode = modes[1%len(modes)]
range = a[-1] - a[0]
print( mean )
print( median )
print( mode )
print( range )
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}