알고리즘

[백준] 18310 안테나 JAVA

begong 2024. 4. 6. 07:19
반응형

 

그리디 알고리즘 문제

 

접근방식

- 전봇대의 왼쪽, 오른쪽 집의 갯수가 같아야 한다 = > 1 3 5 7 이라 가정했을 때 전봇대가 3->2로 이동한다고 치면, 오른쪽에 집이 3개가 있기 때문에 거리의 합이 +3-1이되어 +2가된다. 3~5에서 이동은 좌측, 우측 집이 2개씩이기때문에 총 길이의 합의 변화가 없다.

 

3~5에서의 이동만 총 길이가 늘어나지 않기 때문에 최소치이다.

 

집의 갯수가 홀수일 경우, 집들의 중간값에있는 위치만이 좌측 우측의 집의 갯수가 동일하므로 유일한 답

집의 갯수가 짝수일 경우 중간값 2개중 작은것이 답(문제의 조건때문에)

 

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

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[] arr = new int[N];
        StringTokenizer st = new StringTokenizer(br.readLine());

        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
        Arrays.sort(arr);
        int idx = (N-1) / 2;
        System.out.println(arr[idx]);
    }
}

 

반응형

'알고리즘' 카테고리의 다른 글

[백준 2302 JAVA] 극장 좌석  (0) 2024.04.09
[백준 15664 JAVA] N과M (10)  (0) 2024.04.09
[백준] 20303 할로윈의 양아치 JAVA  (0) 2024.04.01
[백준] 14500 테트로미노 JAVA  (1) 2024.03.29
[백준 1946 JAVA] 신입 사원  (0) 2024.03.27