Home [BaekJoon] 2108 ํ†ต๊ณ„ํ•™ JAVA
Post
Cancel

[BaekJoon] 2108 ํ†ต๊ณ„ํ•™ JAVA

๐Ÿ”— ๋ฐฑ์ค€ 2108 ํ†ต๊ณ„ํ•™ https://www.acmicpc.net/problem/2108

๋ฌธ์ œ

์ˆ˜๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๊ฒƒ์€ ํ†ต๊ณ„ํ•™์—์„œ ์ƒ๋‹นํžˆ ์ค‘์š”ํ•œ ์ผ์ด๋‹ค. ํ†ต๊ณ„ํ•™์—์„œ N๊ฐœ์˜ ์ˆ˜๋ฅผ ๋Œ€ํ‘œํ•˜๋Š” ๊ธฐ๋ณธ ํ†ต๊ณ„๊ฐ’์—๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ์žˆ๋‹ค. ๋‹จ, N์€ ํ™€์ˆ˜๋ผ๊ณ  ๊ฐ€์ •ํ•˜์ž.

  1. ์‚ฐ์ˆ ํ‰๊ท  : N๊ฐœ์˜ ์ˆ˜๋“ค์˜ ํ•ฉ์„ N์œผ๋กœ ๋‚˜๋ˆˆ ๊ฐ’
  2. ์ค‘์•™๊ฐ’ : N๊ฐœ์˜ ์ˆ˜๋“ค์„ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ๋‚˜์—ดํ–ˆ์„ ๊ฒฝ์šฐ ๊ทธ ์ค‘์•™์— ์œ„์น˜ํ•˜๋Š” ๊ฐ’
  3. ์ตœ๋นˆ๊ฐ’ : N๊ฐœ์˜ ์ˆ˜๋“ค ์ค‘ ๊ฐ€์žฅ ๋งŽ์ด ๋‚˜ํƒ€๋‚˜๋Š” ๊ฐ’
  4. ๋ฒ”์œ„ : N๊ฐœ์˜ ์ˆ˜๋“ค ์ค‘ ์ตœ๋Œ“๊ฐ’๊ณผ ์ตœ์†Ÿ๊ฐ’์˜ ์ฐจ์ด

N๊ฐœ์˜ ์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋„ค ๊ฐ€์ง€ ๊ธฐ๋ณธ ํ†ต๊ณ„๊ฐ’์„ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.


์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ˆ˜์˜ ๊ฐœ์ˆ˜ N(1 โ‰ค N โ‰ค 500,000)์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ, N์€ ํ™€์ˆ˜์ด๋‹ค. ๊ทธ ๋‹ค์Œ N๊ฐœ์˜ ์ค„์—๋Š” ์ •์ˆ˜๋“ค์ด ์ฃผ์–ด์ง„๋‹ค. ์ž…๋ ฅ๋˜๋Š” ์ •์ˆ˜์˜ ์ ˆ๋Œ“๊ฐ’์€ 4,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค.


์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์‚ฐ์ˆ ํ‰๊ท ์„ ์ถœ๋ ฅํ•œ๋‹ค. ์†Œ์ˆ˜์  ์ดํ•˜ ์ฒซ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋‘˜์งธ ์ค„์—๋Š” ์ค‘์•™๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์…‹์งธ ์ค„์—๋Š” ์ตœ๋นˆ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค. ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ์—๋Š” ์ตœ๋นˆ๊ฐ’ ์ค‘ ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

๋„ท์งธ ์ค„์—๋Š” ๋ฒ”์œ„๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.


ํ’€์ด

ํ‰๊ท ๊ฐ’ : ์ž…๋ ฅ๋ฐ›์€ ๋ชจ๋“  ์ˆ˜๋ฅผ ๋”ํ•˜์—ฌ ๋‚˜๋ˆˆ ํ‰๊ท ์„ round๋กœ ์†Œ์ˆ˜์ ์„ ๋ฐ˜์˜ฌ๋ฆผํ•˜์—ฌ ์ถœ๋ ฅ ์ค‘์•™๊ฐ’ : ์ž…๋ ฅ๋ฐ›์€ ์ˆ˜๊ฐ€ ๋“ค์–ด์žˆ๋Š” ๋ฐฐ์—ด์„ ์ •๋ ฌํ•œ ํ›„ n/2์— ์œ„์น˜ํ•œ ๊ฐ’์„ ์ถœ๋ ฅ ๋ฒ”์œ„ : ์ •๋ ฌํ•œ ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜ - ๊ฐ€์žฅ ์ž‘์€ ์ˆ˜ ๋ฅผ ์ถœ๋ ฅ

์—ฌ๊ธฐ์„œ ๋ฌธ์ œ๋Š” ์ตœ๋นˆ๊ฐ’์ด๋‹ค. ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ์žˆ๋‹ค๋ฉด ์ตœ๋นˆ๊ฐ’ ์ค‘ ๋‘ ๋ฒˆ์งธ๋กœ ์ž‘์€ ๊ฐ’์„ ์ถœ๋ ฅํ•ด์•ผํ•œ๋‹ค. ์—ฌ๊ธฐ์„œ ๊ณ ๋ฏผํ•˜๋Š” ๋™์•ˆ ์‹œ๊ฐ„์„ ์กฐ๊ธˆ ์žก์•„๋จน์—ˆ๋‹ค.

๋จผ์ € ์ตœ๋นˆ๊ฐ’์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์ˆ˜๋ฅผ ์ž…๋ ฅ๋ฐ›์„ ๋•Œ๋งˆ๋‹ค ๊ทธ ์ˆ˜๋ฅผ index๋กœ ํ•˜์—ฌ ์นด์šดํŒ…ํ•  boolean ๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ฃผ์—ˆ๋‹ค. ๊ทธ ํ›„๋กœ ์นด์šดํŒ…์„ ๋๋‚ธ ํ›„, boolean ๋ฐฐ์—ด์—์„œ ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์ฐพ์•„ ๊ทธ ์ธ๋ฑ์Šค๋ฅผ list์— ์ €์žฅํ•œ๋‹ค.

๋งŒ์•ฝ list์˜ ๊ธธ์ด๊ฐ€ 1๋ณด๋‹ค ํฌ๋‹ค๋ฉด 1๋ฒˆ ์ธ๋ฑ์Šค์— ์ €์žฅํ•œ ์ˆ˜๋ฅผ, ์•„๋‹ˆ๋ผ๋ฉด 0๋ฒˆ์งธ ์ˆ˜๋ฅผ ์ถœ๋ ฅ์‹œ์ผœ์ค€๋‹ค.

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
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));

        int n  = Integer.parseInt(br.readLine());
        int[] arr = new int[n];
        List<Integer> list = new ArrayList<>();
        int[] check = new int[8001]; // ์ ˆ๋Œ€๊ฐ’ 4000, ์ฆ‰ -4000 ~ 4000๊นŒ์ง€ ์ด 8001๊ฐœ
        int max = 0;
        int sum = 0;

        for (int i = 0; i < n; i++) {
            arr[i] = Integer.parseInt(br.readLine());
            sum += arr[i];
            check[arr[i] + 4000]++;
        }

        System.out.println((int)Math.round((double)sum/n)); // ํ‰๊ท 
        Arrays.sort(arr);
        System.out.println(arr[n/2]); // ์ค‘์•™๊ฐ’

        for (int i = 0; i < 8001; i++) max = Math.max(max, check[i]);
        for (int i = 0; i < 8001; i++) if(check[i] == max) list.add(i - 4000);

        System.out.println(list.size() > 1 ? list.get(1) : list.get(0)); // ์ตœ๋นˆ๊ฐ’
        System.out.println(arr[arr.length-1] - arr[0]); // ๋ฒ”์œ„
    }
}
This post is licensed under CC BY 4.0 by the author.

[BaekJoon] 1978 ์†Œ์ˆ˜ ์ฐพ๊ธฐ JAVA

[BaekJoon] 2798 ๋ธ”๋ž™์žญ JAVA