문제링크 : https://www.acmicpc.net/problem/18310
문제 설명
일직선상에 마을에 여러 채의 집이 위치해 있고, 이 중에서 특정 위치의 지에 특별히 한 개의 안테나를 설치하려고 한다.
효율성을 위해 안테나로부터 모든 집까지의 거리의 총합이 최소가 되도록 설치한다.
이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다.
안테나를 설치할 위치를 선택하는 프로그램을 작성하세요.
입력조건
- 첫째 줄에 집의 수 N
- 둘째 줄에 N채의 집의 위치
출력조건
- 안테나를 설치할 위치 값 출력
입출력 예시
-
입력예시 출력예시 4
5 1 7 95
문제 풀이
- 입력받은 집의 위치를 오름차순 정렬한 후, 정확히 중간에 위치한 집을 선택한다.
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 나동빈
'PS > 이코테' 카테고리의 다른 글
[이코테][Java] 실패율 (0) | 2025.01.12 |
---|---|
[이코테][Java] 국영수 (0) | 2025.01.09 |
[이코테] 정렬(Sort) (0) | 2024.12.26 |
[이코테][Java] 문자열 재정렬 (0) | 2024.11.19 |
[이코테][Java] 럭키 스트레이트 (1) | 2024.11.19 |