๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 18110 solved.ac

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 21.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ 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

ArrayDeque๋ฅผ ํ™œ์šฉํ•ด์„œ ์ž˜ ํ’€ ์ˆ˜ ์žˆ์–ด์„œ ๋ฟŒ๋“ฏํ–ˆ๋‹ค!

์ฝ”๋“œ

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