Language/JAVA
[JAVA][백준 18110][구현] solved.ac - 컴도리돌이
컴도리돌이
2024. 1. 26. 19:19
728x90
728x90
18110번: solved.ac
5명의 15%는 0.75명으로, 이를 반올림하면 1명이다. 따라서 solved.ac는 가장 높은 난이도 의견과 가장 낮은 난이도 의견을 하나씩 제외하고, {5, 5, 7}에 대한 평균으로 문제 난이도를 결정한다.
www.acmicpc.net
오랜만에 백준 문제를 푸는데 실버, 브론즈 문제도 버벅거리네요.🥲
이번 문제는 가벼운 구현 문제예요.
시간제한이 조금 힘들어서 정답 비율은 낮지만,
원래 배열과 BufferedReader를 사용하시는 분들이면
어렵지 않게 구현할 수 있을 거예요 😆
문제에서 상위 15 % 와 하위 15 %를 제외한 나머지 인원에 대한 평균을 출력하는 문제입니다.
n을 초기 입력받아서 array 크기를 할당시켜 줍니다.
그리고 개행마다 숫자를 n만큼 array에 저장을 하고 정렬을 시켜줍니다.
상/하위 15%를 구분해줘야 하기 때문에 0.15을 n에 곱해서 반올림 처리한 후
상/하위 안에 있는 값들을 더해줍니다.
마지막으로 상/하위 15%를 제외한 값으로 더해준 값을 나누고 반올림 처리하여 출력하면 됩니다.
실버 난이도는 다른 예외 상황 생각하지 않고 쉽게 구현할 수 있는 거 같아요
🤔
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
int[] arr = new int[n];
for (int i = 0; i < n; i++) {
arr[i] = Integer.parseInt(br.readLine());
}
Arrays.sort(arr);
int flag = (int) Math.round(n * 0.15);
double sum = 0;
for (int i = flag; i < n - flag; i++) {
sum += arr[i];
}
System.out.println((int) Math.round(sum / (n - flag - flag)));
}
}
728x90
728x90