본문 바로가기
Problem Solving/Baekjoon

[백준] 2548 대표 자연수 - Brute Force / Java

by graycode 2023. 6. 2.

 문제 링크

 

2548번: 대표 자연수

첫째 줄에는 자연수의 개수 N이 입력된다. N은 1 이상 20,000 이하이다. 둘째 줄에는 N개의 자연수가 빈칸을 사이에 두고 입력되며, 이 수들은 모두 1 이상 10,000 이하이다.

www.acmicpc.net

 

 풀이 과정

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

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

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] arr = new int[n];
        int sub = 10000;
        while (n-- > 0) {
            arr[n] = Integer.parseInt(st.nextToken());
            sub = Math.min(sub, arr[n]);
        }

        int min = Integer.MAX_VALUE;
        while (true) {
            int sum = 0;
            for (int i : arr)
                sum += Math.abs(i - sub);

            if (sum < min) {
                min = sum;
                sub++;
            } else
                break;
        }

        bw.write(String.valueOf(sub - 1));
        bw.flush();
    }

}

 

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.StringTokenizer;

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

        int n = Integer.parseInt(br.readLine());
        StringTokenizer st = new StringTokenizer(br.readLine());

        int[] arr = new int[n];
        for (int i = 0; i < n; i++)
            arr[i] = Integer.parseInt(st.nextToken());

        Arrays.sort(arr);

        bw.write(String.valueOf(arr[(n - 1) / 2]));
        bw.flush();
    }

}

댓글