본문 바로가기
백준

백준 18310번 : 안테나

by Huiyeong 2021. 3. 7.

 문제

www.acmicpc.net/problem/18310

 

18310번: 안테나

첫째 줄에 집의 수 N이 자연수로 주어진다. (1≤N≤200,000) 둘째 줄에 N채의 집에 위치가 공백을 기준으로 구분되어 1이상 100,000이하의 자연수로 주어진다.

www.acmicpc.net

18310 안테나

 

 구현 방법

 고민한거에 비해 너무나 간단했던.. 문제였습니다.

모든 집까지 거리의 총 합이 가장 최소가 되는 곳은 중간지점입니다.

중간지점보다 더 작은 값이 나올 순 없죠..

그래서 입력된 집들의 위치를 정렬하여 가장 작은 값과 가장 큰 값의 중간 값을 구해주었습니다.

 

 하지만 설치할 수 있는 위치 값으로 여러 개의 값이 도출될 경우에는 가장 작은 값으로 출력

생각해보면 주어진 값이 홀수라면 중간값이 하나이지만 짝수라면 중간값이 두 개라고 볼 수 있습니다.

따라서 조건을 추가하여 N이 짝수라면 중간값-1을 출력해주었습니다.

 

 구현 코드

package BOJ.Silver;

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

public class B18310_안테나 {
	static int N, MIN;
	static int[] house;
	static int sum;
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		N = Integer.parseInt(br.readLine());
		house = new int[N];
		StringTokenizer st = new StringTokenizer(br.readLine());
		for (int i=0;i<N;i++) {
			house[i] = Integer.parseInt(st.nextToken());
		}
		Arrays.sort(house);
		if(N%2==0) System.out.println(house[N/2-1]);
		else System.out.println(house[N/2]);
	}
}

\

정답!

'백준' 카테고리의 다른 글

백준 10026번 : 적록색약  (0) 2021.03.07
백준 2960번 : 에라토스테네스의 체  (0) 2021.03.07
백준 1764번 : 듣보잡  (0) 2021.03.07
백준 2589번 : 보물섬  (0) 2021.03.07
백준 1205번 : 등수 구하기  (0) 2021.03.07