Algorithm

안테나 - '이것이 코딩 테스트다 with 파이썬'

태인킴 2020. 9. 1. 21:59
반응형
 

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

IT 취준생이라면 누구나 입사하고 싶은 카카오ㆍ삼성전자ㆍ네이버ㆍ라인!취업의 성공 열쇠는 알고리즘 인터뷰에 있다!IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부

book.naver.com

 

18310번: 안테나

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

www.acmicpc.net

'안테나' 문제 입니다. 일직선상의 집의 위치가 주어지고, 안테나는 집의 위치중 한군데만 설치 할 수 있습니다. 이때 안테나로 부터 모든 집의 위치까지 거리의 합이 최소가 되는 안테나의 위치를 출력 하는 문제 입니다. 집의 위치는 값의 상관없이 랜덤하게 배열로 주어 집니다.

 

1. 접근

1. 집의 위치가 들어있는 배열을 오름차순으로 정렬 합니다.

2. 정렬된 배열 에서 중간 인덱스 값을 계산 합니다.

3. 중간 인덱스 값의 해당하는 집의 위치가 모든 집들의 거리의 합이 최소가 되는 지점 입니다.

 

import java.util.Arrays;

public class Page360 {
    //입력 예시
    //4       (집의 개수)(1 <= N <= 200000)
    //5 1 7 9 (집의 위치)(1 <= M <= 100000)
    //출력 예시
    //5       (안테나 부터 집까지의 합이 최소가 되는 안테나 설치 위치)
    public static void main(String[] args) {
        int N = 4;
        int[] arr = {5, 1, 7, 9};
        System.out.print(new Page360().solution(N, arr));
    }

    int solution(int N, int[] arr){
        //(배열의 갯수 / 2) 의 인덱스의 해당하는 집 위치 반환
        Arrays.sort(arr);
        return arr[(N-1)/2];
    }
}
반응형