본문 바로가기
개발 관련 공부/알고리즘

백준 2108

by 슴새 2021. 8. 4.
반응형

import java.util.*;
import java.lang.reflect.Array;
 
import java.util.Collections;
public class Main{
    static public void main(String args[]){
    	Scanner sc = new Scanner(System.in);
    	int n = sc.nextInt();
          int arr []=new int [n];
	 for(int i=0;i<n;i++) {
		 arr[i]=sc.nextInt();
	 }
	 Arrays.sort(arr);
	 
	 int sum=0;
	 //합 구하기  
	 for(int i=0;i<n;i++) {
		 sum+=arr[i];
	 }
	//빈도수 배열 구하기
	int mode []=new int[n];
	int idx=0; 
    int k=1;
    while(k<n) {
    	if(arr[k]==arr[k-1]) {
    		mode[idx]=mode[idx]+1;
    	}
    	else {
    		idx=idx+mode[idx]+1;
    	}
    	k++;
    }
     
    //빈도수 배열에서 가장 높은 수를 구하고
    int max=0;
    for(int i=0;i<=idx;i++) {
    	if(mode[i]>max) max=mode[i];
    }
    //max번 나온애들의 idx를 리스트에 추가
    ArrayList <Integer> ans_idx=new ArrayList<>();
    for(int i=0;i<=idx;i++) {
    	if(mode[i]==max) ans_idx.add(i);
    }
    
     
     
	//산술평균
	System.out.println(Math.round((float)sum/n));
	//중간값
	System.out.println(arr[n/2]);
	//최빈값(가장 많이 나온 값). 여러 개 있을 때에는 최빈값 중 두 번째로 작은 값을 출력한다.
    
	if(ans_idx.size()>1) {
    	int myidx=ans_idx.get(1); 
    	
    	System.out.println(arr[myidx]);
    }
    else {
    	int myidx=ans_idx.get(0);
    	System.out.println(arr[myidx]);
    }
	//범위
	System.out.println(arr[n-1]-arr[0]);
	}
     
 }
반응형

'개발 관련 공부 > 알고리즘' 카테고리의 다른 글

백준 9184  (0) 2021.08.06
백준 18870  (0) 2021.08.05
백준 11652  (0) 2021.08.03
백준 10989  (0) 2021.08.02
백준 10814  (0) 2021.07.30

댓글