일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
Tags
- springboot
- 피보나치
- DFS
- 알고리즘
- IntelliJ
- BFS
- 정렬
- mariaDB
- 코테
- 백준
- Greedy
- select
- 깊이우선탐색
- 우선순위큐
- Database
- 데이터베이스
- Spring
- Effective Java
- SQL
- db
- DP
- mybatis
- 탐욕법
- join
- 다이나믹프로그래밍
- 너비우선탐색
- java
- 그리디알고리즘
- 프로그래머스
- 이펙티브자바
Archives
- Today
- Total
땀두 블로그
[백준] 2108번 - 통계학 본문


이 문제는 간단한 수학 문제이다. 입력값의 개수는 홀수라고 정해졌기 때문에 중간값은 입력값을 2로 나눈 값을 해주면 되고, 산술평균의 경우 모든 값을 다 더한 뒤 입력값의 개수로 나누어주면된다.
최빈값의 경우 조금 헷갈렸는데, 범위가 절대값 4000으로 주어졌기 때문에 8001짜리 배열을 만들어 빈도 수를 저장하고, 최대값과 최소값을 지정하여 그 부분만 반복하여 빈도수가 가장 높은 값을 구한다. 그리고 flag를 두어 한번 방문하고 같은 최빈값을 가지는 경우 갱신할 수 있도록 하였다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
public class p2108 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int[] index = new int[8001];
int a = Integer.parseInt(br.readLine());
ArrayList<Integer> list = new ArrayList<>();
int min = 4000;
int max = -4000;
double sum = 0;
for (int i = 0; i < a; i++) {
list.add(Integer.parseInt(br.readLine()));
sum += list.get(i);
index[list.get(i) + 4000]++;
if (list.get(i) < min) {
min = list.get(i);
}
if (list.get(i) > max) {
max = list.get(i);
}
}
Collections.sort(list);
int cnt = 0;// 최빈값 수
int idx = 0;
boolean flag = false;
for (int i = min + 4000; i <= max + 4000; i++) {
if (cnt < index[i]) {
cnt = index[i];
idx = i - 4000;
flag = true;
} else if (cnt == index[i] && flag == true) {
cnt = index[i];
idx = i - 4000;
flag = false;
}
}
sb.append(Math.round(sum / a) + "\n");
sb.append(list.get(a / 2) + "\n");
sb.append(idx + "\n");
sb.append(list.get(a - 1) - list.get(0));
System.out.println(sb);
}
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 9012번 - 괄호 (0) | 2022.03.20 |
---|---|
[백준] 1920번 - 수 찾기(HashSet) (0) | 2022.03.20 |
[백준] 1920번 - 수 찾기 (0) | 2022.03.20 |
[백준] 11651번 - 좌표 정렬하기 2 (0) | 2022.03.19 |
[백준] 11650번 - 좌표 정렬하기 (0) | 2022.03.19 |
Comments