반응형
분류: 정렬
▶문제
▶코드
//백준알고리즘 제출시 클래스 이름은 Main으로 바꿔야 됨
package sort;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
//해결은 했지만 런타임 에러
public class p2108_2 {
public static void main(String[] args) {
try( BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));){
int n = Integer.parseInt(br.readLine());
int[] cnt = new int[8001]; //-4000~4000까지: 인덱스 0~3999은 음수, 4000은 0, 4001~8000은 양수
int sum = 0; int first=0, last=0; int center=0;
for(int i=0; i<n; i++) {
int number = Integer.parseInt(br.readLine());
cnt[number+4000] +=1;
sum += number;
}
int total=0;int index=0;
boolean flag =false; int mode=0; int mode_max=0;
/*flag는 빈도수가 같은게 나왔는지 체크하는거. mode는 최빈값, mode_max는 빈도수*/
for(int i=0; i<=8000; i++) {
if(cnt[i]>0) {
if(cnt[i]>mode_max) {//가장 많이나온 횟수가 같으면 2번쨰로 작은 값(=즉 오름차순에서 두번째)을 최빈값으로 정한다.
mode_max = cnt[i];
mode = i-4000;
flag = true;
}else if(flag==true && mode_max==cnt[i]){//위 주석 때문에 같은 횟수가 두번째 이후에 나오는건 필요없기에
mode_max = cnt[i];
mode = i-4000;
flag = false; //flag를 false로 해주고 더 큰 수를 찾게 한다.
}
if(index==0) first=i-4000;
else if(index>0) last=i-4000;
if(total<(n+1)/2 ) { //중간값을 구하는 법:total이 (n+1)/2번쨰 수가 될때까지 돌리면 그때i-4000가 중간값이 됨.
center = i-4000; //(like)3번째 수를 구하는데 3이상이 될때의 수를 구한거...//?
}total += cnt[i];
index++;
if(total>n) break;
}
}
bw.write(String.valueOf(Math.round(sum/n))+"\n"//평균
+String.valueOf(mode)+"\n"//최빈값
+String.valueOf(center)+"\n"//중간값
+String.valueOf(last-first)+"\n"//최댓값과 최솟값의 차이
);
bw.flush();
}catch(Exception e) {e.printStackTrace();}
}
}
▶flag를 사용해서 최빈값을 구했다.
참고한 블로그: st-lab.tistory.com/108
다시 해봐야 하나. 왜 런타임에러가 자꾸 나오지ㅠ
채점결과
링크 www.acmicpc.net/problem/2108
2108번: 통계학
첫째 줄에 수의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 그 다음 N개의 줄에는 정수들이 주어진다. 입력되는 정수의 절댓값은 4,000을 넘지 않는다.
www.acmicpc.net
반응형
'백준알고리즘' 카테고리의 다른 글
백준알고리즘:p1011 Fly me to the Alpha Centauri (0) | 2021.03.28 |
---|---|
백준알고리즘:p1978, p2581 소수찾기 소수 (0) | 2021.03.28 |
백준알고리즘:p10989 수 정렬하기3 (0) | 2021.03.17 |
백준알고리즘:p2751 수 정렬하기2 (0) | 2021.03.17 |
백준알고리즘:p2750 수 정렬하기 (0) | 2021.03.12 |
댓글