solved.ac(18110)
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
32
33
34
35
36
37
import java.io.*;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
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 cut = (int)Math.round(n * 0.15);
double sum = 0;
for(int i = cut; i < n - cut; i++){
sum += arr[i];
}
int avg = (int)Math.round(sum / (n - cut * 2));
sb.append(avg);
bw.write(sb.toString());
bw.flush();
bw.close();
br.close();
}
}
풀이과정
- 형변환에 유의하며 문제를 풀었다
- 성공
- 메모리 : 38064 KB
- 시간 : 364 ms
보안점
- 다른 사람의 풀이를 보면 score의 범위로 배열을 잡고, 입력된 값에 따라 해당 인덱스의 값을 1씩 증가시켜 총 입력갯수를 정했다.
- 이렇게 하면, 배열 정렬이 필요없고 바로 최소값과 최대값을 알 수 있게 된다.
- 코드의 간결함과 직관성으로는 내 풀이 방식이 좋아보이고, 메모리와 응답시간의 효율을 위해서는 배열의 정렬이 필요없는 다른 방식의 풀이도 좋아보였다.