문제
구현 방법
고민한거에 비해 너무나 간단했던.. 문제였습니다.
모든 집까지 거리의 총 합이 가장 최소가 되는 곳은 중간지점입니다.
중간지점보다 더 작은 값이 나올 순 없죠..
그래서 입력된 집들의 위치를 정렬하여 가장 작은 값과 가장 큰 값의 중간 값을 구해주었습니다.
하지만 설치할 수 있는 위치 값으로 여러 개의 값이 도출될 경우에는 가장 작은 값으로 출력
생각해보면 주어진 값이 홀수라면 중간값이 하나이지만 짝수라면 중간값이 두 개라고 볼 수 있습니다.
따라서 조건을 추가하여 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 |