코딩테스트/백준

백준 2108 : 통계학 _자바 Java

플래시🦥 2023. 1. 17.
반응형

https://www.acmicpc.net/problem/2108

 

2108번: 통계학

첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.

www.acmicpc.net


import java.io.*;
import java.util.*;

public class Main {
	
	static int max=0;
	
	static int[] cnt= new int[8001];
	public static void main(String[] args) throws IOException {
		Scanner sc = new Scanner(System.in);
		int Case = sc.nextInt();
		int[] n=new int[Case];
		Double r1=0.0;
		int r2,r3,r4;
		
		
		for(int i=0;i<Case;i++) {
			n[i]=sc.nextInt();
			r1+=n[i];
			cnt[n[i]+4000]++;
		}//for
		Arrays.sort(n);
		
		r1/=Case;
		r2=n[Case/2];
		r4=n[Case-1]-n[0];
	
		r3=count();
		
		System.out.println(Integer.parseInt(String.format("%.0f",r1)));			//산술평균
		System.out.println(r2);	//중앙값
		System.out.println(r3);			//최빈값
		System.out.println(r4);			//범위
	}//main()

	private static int count() {
	
		ArrayList<Integer> li = new ArrayList<>();
		ArrayList<Integer> li2 = new ArrayList<>();
		
		for(int i=0;i<8001;i++) {
			if(cnt[i]>0) {
				li.add(i);
			}//if
		}//for
		
		for(int i=0;i<li.size();i++) {
			max=Math.max(max,cnt[li.get(i)]);
		}
		
		for(int i=0;i<li.size();i++) {
			if(max==cnt[li.get(i)])
				li2.add(li.get(i)-4000);
		}
		if(li2.size()>1)
			return li2.get(1);
		else
			return li2.get(0);
		

	}//count()
	
}//class Main
728x90
반응형

댓글