개발일기
Baekjoon2108.java 본문
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class baekjoon2108 {
public static void main(String[] args) throws IOException{
int []numberArr = new int[8001];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int sum = 0,max = Integer.MIN_VALUE,min = Integer.MAX_VALUE;
for(int i=0;i<n;i++){
int targetNumber = Integer.parseInt(br.readLine());
if(max<targetNumber){
max = targetNumber;
}
if(min>targetNumber){
min = targetNumber;
}
sum += targetNumber;
numberArr[4000+targetNumber]++;
}
int average = sum / n;
System.out.println(average);
int flag= 0;
int median=0;
int nNum = 0;
int mode=0;
boolean modeFlag=false;
for(int i=min; i<=max;i++){
if(nNum < numberArr[i+4000]){
nNum = numberArr[i+4000];
mode = i;
modeFlag=true;
}else if(nNum==numberArr[i+4000] && modeFlag!=false){
nNum = numberArr[i+4000];
mode =i;
modeFlag=false;
}
while(numberArr[i+4000]!=0){
if(flag== n/2) median=i;
flag++;
numberArr[i+4000]--;
}
}
System.out.println(median);
System.out.println(mode);
int range = max - min;
System.out.println(range);
}
}
위에와 같이 Counting Sort정렬을 사용해 풀었지만... 자꾸 실패가뜸.. 다시 한번 차근차근 풀어보자.
내가 실수한 부분 여기서 산술 평균이여서 Math.round를 사용하여 sum/n을 나눈 것을 double형으로 만들어주어 소수로 판단하고 여기서 반올림을 하여 평균을 구해야 했음. 이 부분을 하지 못했음.. 생각이 짧았다.
하나더 배우는 과정이였던거 같음
'Algorithm > 정렬알고리즘' 카테고리의 다른 글
[자바] 18870 - 좌표 압축 Java(자바) // Study 메모용 (0) | 2022.10.28 |
---|---|
Baekjoon1427 (0) | 2022.09.30 |
Baekjoon 25305 커트라인 (0) | 2022.09.20 |