๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/18110
- ์ด๋ค ๋ฌธ์ ์ ๋์ด๋๋ ๊ทธ ๋ฌธ์ ๋ฅผ ํผ ์ฌ๋๋ค์ด ์ ์ถํ ๋์ด๋ ์๊ฒฌ์ ๋ฐํ์ผ๋ก ๊ฒฐ์ ํ๋ค.
- ๋์ด๋ ์๊ฒฌ์ ๊ทธ ์ฌ์ฉ์๊ฐ ์๊ฐํ ๋์ด๋๋ฅผ ์๋ฏธํ๋ ์ ์ ํ๋๋ก ์ฃผ์ด์ง๋ค. solved.ac๊ฐ ์ฌ์ฉ์๋ค์ ์๊ฒฌ์ ๋ฐํ์ผ๋ก ๋์ด๋๋ฅผ ๊ฒฐ์ ํ๋ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ๋ค.
- ์์ง ์๋ฌด ์๊ฒฌ์ด ์๋ค๋ฉด ๋ฌธ์ ์ ๋์ด๋๋ 0์ผ๋ก ๊ฒฐ์ ํ๋ค.
- ์๊ฒฌ์ด ํ๋ ์ด์ ์๋ค๋ฉด, ๋ฌธ์ ์ ๋์ด๋๋ ๋ชจ๋ ์ฌ๋์ ๋์ด๋ ์๊ฒฌ์ 30% ์ ์ฌํ๊ท ์ผ๋ก ๊ฒฐ์ ํ๋ค.
- ์ ์ฌํ๊ท ์ด๋ ๊ทน๋จ์ ์ธ ๊ฐ๋ค์ด ํ๊ท ์ ์๊ณกํ๋ ๊ฒ์ ๋ง๊ธฐ ์ํด ๊ฐ์ฅ ํฐ ๊ฐ๋ค๊ณผ ๊ฐ์ฅ ์์ ๊ฐ๋ค์ ์ ์ธํ๊ณ ํ๊ท ์ ๋ด๋ ๊ฒ์ ๋งํ๋ค.
- 30% ์ ์ฌํ๊ท ์ ๊ฒฝ์ฐ ์์์ 15%, ์๋์์ 15%๋ฅผ ๊ฐ๊ฐ ์ ์ธํ๊ณ ํ๊ท ์ ๊ณ์ฐํ๋ค.
- ๋ฐ๋ผ์ 20๋ช ์ด ํฌํํ๋ค๋ฉด, ๊ฐ์ฅ ๋์ ๋์ด๋์ ํฌํํ 3๋ช ๊ณผ ๊ฐ์ฅ ๋ฎ์ ๋์ด๋์ ํฌํํ 3๋ช ์ ํฌํ๋ ํ๊ท ๊ณ์ฐ์ ๋ฐ์ํ์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
- ์ ์ธ๋๋ ์ฌ๋์ ์๋ ์, ์๋์์ ๊ฐ๊ฐ ๋ฐ์ฌ๋ฆผํ๋ค. 25๋ช ์ด ํฌํํ ๊ฒฝ์ฐ ์, ์๋์์ ๊ฐ๊ฐ 3.75๋ช ์ ์ ์ธํด์ผ ํ๋๋ฐ, ์ด ๊ฒฝ์ฐ ๋ฐ์ฌ๋ฆผํด 4๋ช ์ฉ์ ์ ์ธํ๋ค.
- ์ฌ์ฉ์๋ค์ด ์ด๋ค ๋ฌธ์ ์ ์ ์ถํ ๋์ด๋ ์๊ฒฌ ๋ชฉ๋ก์ด ์ฃผ์ด์ง ๋, solved.ac๊ฐ ๊ฒฐ์ ํ ๋ฌธ์ ์ ๋์ด๋๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
- ๋ง์ง๋ง์ผ๋ก, ๊ณ์ฐ๋ ํ๊ท ๋ ์ ์๋ก ๋ฐ์ฌ๋ฆผ๋๋ค. ์ ์ฌํ๊ท ์ด 16.7์ด์๋ค๋ฉด ์ต์ข ๋์ด๋๋ 17์ด ๋๋ค.
- ์ฒซ ๋ฒ์งธ ์ค์ ๋์ด๋ ์๊ฒฌ์ ๊ฐ์ n์ด ์ฃผ์ด์ง๋ค. (0 ≤ n ≤ 3 × 105)
- ์ดํ ๋ ๋ฒ์งธ ์ค๋ถํฐ 1 + n๋ฒ์งธ ์ค๊น์ง ์ฌ์ฉ์๋ค์ด ์ ์ถํ ๋์ด๋ ์๊ฒฌ n๊ฐ๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ๋ชจ๋ ๋์ด๋ ์๊ฒฌ์ 1 ์ด์ 30 ์ดํ์ด๋ค.
- solved.ac๊ฐ ๊ณ์ฐํ ๋ฌธ์ ์ ๋์ด๋๋ฅผ ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- ๋จผ์ ๋ฐฐ์ด์ ์ ๋ ฅ๋ฐ์ ๊ฐ์ ์ ์ฅ ํ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ๊ณ ๊ทธ ๊ฐ์ ๋ค์ ArrayDeque์ ์ ์ฅํ๋ค.
- ์ฌ๋์๋ฅผ ๊ธฐ์ค์ผ๋ก ์์ 15%๊ฐ ๋ช๋ช ์ธ์ง ๊ณ์ฐํ๊ธฐ ์ํด N * 0.15๋ฅผ ํด์คํ, ๋ฐ์ฌ๋ฆผ์ ํด์ค๋ค.
- While๋ฌธ์ ํตํด ์ ์ธํด์ผ ๋๋ ์ฌ๋ ์๊ฐ 0์ด ๋ ๋๊น์ง pollFirst, pollLast๋ฅผ ํตํด ArrayDeque์์ ๊ฐ์ ํ๋์ฉ ๋นผ์ค ํ, ์ ์ธํด์ผ๋๋ ์ฌ๋ ์ - 1์ ํด์ค๋ค.
- ๋ค ๋นผ์ค ํ, ArrayDeque์ ๋จ์ ์๋ฅผ ๋ค ๋ํด์ ์ธ์์๋๋ก ๋๋ ํ๊ท ์ ๊ตฌํด์ค๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- X
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ18110 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
// ์ ์ ์
๋ ฅ ๋ฐ์
int score[] = new int[N];
// ์ ๋ ฌํ ์ ์๋ฅผ ๋ฃ์ Deque
ArrayDeque<Integer> solved = new ArrayDeque<>();
// ์ ์๋ฅผ ์
๋ ซ๋ฐ์
for(int i = 0; i < N; i++){
int n = Integer.parseInt(br.readLine());
score[i] = n;
}
// ์ ์๋ฅผ ์ ๋ ฌ
Arrays.sort(score);
// ์ ๋ ฌํ ์ ์๋ฅผ Deque์ ์ ์ฅ
for(int i = 0; i < N; i++){
solved.addLast(score[i]);
}
// ์ ์๋๋ก ๋ช๋ช
์ ์ธํด์ผ๋๋์ง ํผ์ผํ
์ด์ง ๊ณ์ฐ
int cnt = (int)Math.round(N * 0.15);
// ์ ์ธํด์ผ๋๋ ์ฌ๋์ด 0์ด ๋ ๋๊น์ง ๋ฐ๋ณต
while(true){
if(cnt == 0){
break;
}
// ๋งจ ์์ ๋งจ ๋ฐ์ ์ ์๋ฅผ ์ ๊ฑฐ
solved.pollFirst();
solved.pollLast();
cnt = cnt - 1;
}
// ๊ฒฐ๊ณผ๊ฐ ์ ์ฅ
float result = 0;
for(int i : solved){
result = result + i;
}
// ํ๊ท ๊ฐ์ ๊ตฌํจ
result = Math.round(result / solved.size());
// int๋ก ๋ณํ
int avg = (int)result;
System.out.println(avg);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 1966 ํ๋ฆฐํฐ ํ (0) | 2024.07.21 |
---|---|
[Java] BOJ 1929 ์์ ๊ตฌํ๊ธฐ (0) | 2024.07.21 |
[Java] BOJ 10845 ํ (4) | 2024.07.20 |
[Java] BOJ 10828 ์คํ (0) | 2024.07.20 |
[Java] BOJ 10816 ์ซ์ ์นด๋ 2 (0) | 2024.07.20 |