반응형
백준 18110번 문제 - solved.ac
18110번: solved.ac
5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다.
www.acmicpc.net
문제 분석
- 사용자들의 의견을 바탕으로 난이도를 결정하는 방식은 다음과 같다.
- 아직 아무 의견이 없다면 문제의 난이도는 0으로 결정한다.
- 의견이 하나 이상 있다면, 문제의 난이도는 모든 사람의 난이도 의견의 30% 절사평균으로 결정한다.
- 절사평균 : 극단적인 값들이 평균을 왜곡하는 것을 막기 위해 가장 큰 값들과 가장 작은 값들을 제외하고 평균을 내는 것
- 30% 절사평균 : 위에서 15%, 아래에서 15%를 각각 제외하고 평균
- 제외되는 사람의 수는 위, 아래에서 각각 반올림한다.
- 계산된 평균도 정수로 반올림
해결 키 포인트
- 정수 올림 : Math.ceil()
- 정수 내림 : Math.floor()
- 정수 반올림 : Math.round()
- 소수점 반올림 : n.toFixed(k)
- 숫자 n을 k번째 소수점까지 반올림
- ex) (1.222).toFixed(1) = 1.2
코드
import java.io.*;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int [] nums = new int[N];
for (int i = 0; i < N; i++) {
nums[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(nums);
int noContain = (int) Math.round(N*0.15);
for (int i = 0; i < noContain; i++) {
nums[i] = 0;
nums[N-1-i] = 0;
}
int sum = Arrays.stream(nums).sum();
N = N - (noContain*2);
System.out.println((int) Math.round((double) sum / N));
}
}
반응형
'CodingTEST' 카테고리의 다른 글
[백준 1620] 나는야 포켓몬 마스터 이다솜 (JAVA) (0) | 2023.12.05 |
---|---|
[백준 11723] 집합 (JAVA) (0) | 2023.12.05 |
[백준 4949] 균형잡힌 세상 (JAVA) (0) | 2023.12.05 |
[백준 11651] 좌표 정렬하기 2 (JAVA) (1) | 2023.12.05 |
[백준 1676] 팩토리얼 0의 개수(JAVA) (0) | 2023.12.05 |