PS/이코테

[이코테][Java] 안테나

nyrimmm 2024. 12. 28. 01:10

문제링크 : https://www.acmicpc.net/problem/18310


문제 설명

일직선상에 마을에 여러 채의 집이 위치해 있고, 이 중에서 특정 위치의 지에 특별히 한 개의 안테나를 설치하려고 한다.

효율성을 위해 안테나로부터 모든 집까지의 거리의 총합이 최소가 되도록 설치한다.

이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다.

안테나를 설치할 위치를 선택하는 프로그램을 작성하세요.

 

입력조건

  • 첫째 줄에 집의 수 N
  • 둘째 줄에 N채의 집의 위치

출력조건

  • 안테나를 설치할 위치 값 출력

입출력 예시

  •  
    입력예시 출력예시
    4
    5 1 7 9
    5

 

 

 

 

문제 풀이

  • 입력받은 집의 위치를 오름차순 정렬한 후, 정확히 중간에 위치한 집을 선택한다.
import java.io.*;
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));

        int n = Integer.parseInt(br.readLine());    //집의 수
        int[] houses = new int[n];  //집들의 위치

        StringTokenizer st = new StringTokenizer(br.readLine());
        for (int i = 0; i < n; i++) {
            houses[i] = Integer.parseInt(st.nextToken());
        }

        Arrays.sort(houses);
        System.out.println((n % 2 == 0 ? houses[n / 2 - 1] : houses[n / 2]));
    }
}

 

 


 

[참고서적]

이것이 취업을 위한 코딩 테스트다 with 파이썬 by 나동빈