hahn

단계별로 풀어보기(정렬 - 통계학) 본문

코딩테스트 연습/백준(JAVA)

단계별로 풀어보기(정렬 - 통계학)

hahn 2021. 9. 18. 15:07
728x90
반응형

2108번: 통계학 (acmicpc.net)

 

2108번: 통계학

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

www.acmicpc.net

http://boj.kr/022eaf8481274883afcb255a2f2b20e7

 

공유 소스 보기

 

www.acmicpc.net

더보기
import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

class Main{
    
    public static void main(String[] args){
        
        Scanner sc = new Scanner(System.in);
		
		int inputCount = sc.nextInt(),
			input, mode = 0, count = 0;
		
		double sum = 0;
		
		List<Integer> numberList = new ArrayList<Integer>(),
					  mapKey, mapValue;
		Map<Integer, Integer> map = new HashMap<Integer, Integer>();
		
		for(int i = 0; i < inputCount; i++) {
			
			input = sc.nextInt();
			
			numberList.add(input);
			sum += input;
			if(map.get(input) == null) map.put(input, 0);
			map.put(input, map.get(input) + 1);
			
		}
		
		mapKey = new ArrayList<Integer>(map.keySet());
		mapValue = new ArrayList<Integer>(map.values());
		mapKey.sort(Comparator.naturalOrder());
		mapValue.sort(Comparator.reverseOrder());
		
		for(int key : mapKey) {
			
			if(map.get(key) == mapValue.get(0)) { 
				
				count++;
				mode = key;
				
				if(count == 2) {
					
					mode = key;
					break;
					
				}
				
			};
			
		}
		
		numberList.sort(Comparator.naturalOrder());
		
		System.out.println(Math.round(sum / inputCount));
		System.out.println(numberList.get(numberList.size() / 2));
		System.out.println(mode);
		System.out.println(numberList.get(numberList.size() - 1) - numberList.get(0));
        
    }
    
}

 

map.values()는 내림 차순 정렬해주는 줄 알고

 

한참 헤맸다 어후..

 

728x90
반응형