백준(Java)/23년 3월
[Java] 백준 - 2108번: 통계학
C0MPAS
2023. 3. 24. 15:26
3월 24일(금) - 정렬 (2108번)
2108번: 통계학
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 단, N은 홀수이다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이 - 1
(BufferedReader + Arrays.sort 사용)
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.Arrays;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
int sum=0;
for(int i=0; i<N;i++)
{
int value = Integer.parseInt(br.readLine());
arr[i] = value;
sum = sum+value;
}
Arrays.sort(arr);
boolean flag = false;
int mode_max=0;
int mode = 10000;
for(int i=0; i<N;i++)
{
int jump=0;
int count=1;
int i_value = arr[i];
for(int j=i+1;j<N;j++)
{
if(i_value != arr[j])
{
break;
}
count++;
jump++;
}
if(count > mode_max)
{
mode_max = count;
mode = i_value;
flag = true;
}
else if(count == mode_max && flag == true)
{
mode = i_value;
flag = false;
}
i = i+jump;
}
System.out.println((int)Math.round((double)sum/N));
System.out.println(arr[N/2]);
System.out.println(mode);
System.out.println(arr[N-1] - arr[0]);
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이 - 2
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이출처 -> https://st-lab.tistory.com/108