
아 이문제 진짜 오래걸렸는데 자잘한 실수들로 계속 답이 틀려서 답답했다.
평균을 n으로 나눴을 때 인트가 나와서ㅠㅠ (float)n 으로 나누는 걸로 바꿨다.
그리고 최빈값을 구하는게 역시나 제일 힘들었는데, 내가 진짜 생각지도 못했던 부분에서
틀려서ㅠㅠ 그거 고치니까 바로 됐다!
재밌는 문제였당.
정답코드
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br= new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));
int n=Integer.parseInt(br.readLine());
int [] arr=new int[n];
int[] count=new int[8001];
int[] most=new int[8001];
int sum=0;
int min=4001;
int max=-4001;
int how=0;
int idx=0;
int realmost;
for (int i=0; i<n; i++) {
arr[i]=Integer.parseInt(br.readLine());
if (arr[i]<min) {
min=arr[i];
}
if (arr[i]>max) {
max=arr[i];
}
sum+=arr[i];
count[arr[i]+4000]++;
}
Arrays.sort(arr);
float ave=sum/(float)n;
for (int i=0; i<count.length; i++) {
if (count[i]>how) {
idx=0;
most[1]=0;
how=count[i];
most[idx]=i-4000;
idx++;
} else if (count[i]==how && how!=0) {
most[idx]=i-4000;
idx++;
}
}
if (most[1]==0) {
realmost=most[0];
} else {
realmost=most[1];
}
bw.write(Integer.toString(Math.round(ave))+"\n");
bw.write(Integer.toString(arr[n/2])+"\n");
bw.write(Integer.toString(realmost)+"\n");
bw.write(Integer.toString(max-min)+"\n");
bw.close();
}
}
'아기 개발자 > 백준 문제풀이' 카테고리의 다른 글
[BOJ_JAVA] 백준 1427번 : 소트 인사이드 @달깅 (0) | 2019.11.15 |
---|---|
[BOJ_JAVA] 백준 2751번 : 수 정렬하기2 @달깅 (0) | 2019.11.09 |
[BOJ_JAVA] 백준 2750번 : 수 정렬하기 @달깅 (0) | 2019.11.09 |
[BOJ_JAVA] 백준 1436번 : 영화감독 숌 @달깅 (0) | 2019.11.09 |
[BOJ_JAVA] 백준 1018번 : 체스판 다시 칠하기 @달깅 (0) | 2019.11.09 |
댓글