시간&메모리 제한
문제
입력&출력
문제 풀이
package com.back;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Back_2108 {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int[] arr = new int[N];
int[] arr2 = new int[8001];
int sum=0;
for (int i = 0; i < N; i++) {
int tmp = Integer.parseInt(br.readLine());
sum +=tmp;
arr[i]=tmp;
arr2[tmp+4000]++;
}
int avg=0;
if (sum < 0) {
avg = -(int) (0.5 + (double) -sum / N);
} else {
avg = (int) (0.5 + (double) sum / N);
}
sb.append(avg+"\n");
Arrays.sort(arr);
sb.append(arr[N/2]+"\n");
int max=0;
boolean flag = false;
for (int i = 0; i < 8001; i++) {
if(arr2[i]>max) {
max = arr2[i];
flag=false;
}else if(arr2[i]==max) {
flag=true;
}
}
if(flag==false) {
for (int i = 0; i < 8001; i++) {
if(arr2[i]==max) {
sb.append(i-4000+"\n");
break;
}
}
}else {
boolean second=false;
for (int i = 0; i < 8001; i++) {
if(arr2[i]==max && second==true) {
sb.append(i-4000+"\n");
break;
}
if(arr2[i]==max && second==false) {
second=true;
}
}
}
if(N==1) {
sb.append("0\n");
}else {
sb.append(arr[N-1]-arr[0]+"\n");
}
System.out.println(sb);
}
}
- 평균값, 중앙값, 최빈값, 범위를 구하는 문제입니다.
- -4000~4000의 범위를 0~8000의 범위로 표현해줬습니다.
- 반올림 해주는 부분과 최빈값을 구하는 부분이 좀 까다로웠던 문제입니다.
'Algorithm > 백준 알고리즘' 카테고리의 다른 글
백준_2947 나무 조각(자바) / 시뮬레이션 (0) | 2021.08.03 |
---|---|
백준_2960 에라토스테네스의 체(자바) / 구현 (0) | 2021.08.02 |
백준_1026 보물(자바) / 정렬 (0) | 2021.07.31 |
백준_11650 좌표 정렬하기(자바) / 정렬 (0) | 2021.07.30 |
백준_2751 수 정렬하기2(자바) / 정렬 (0) | 2021.07.29 |