코딍코딍
코딩기록
코딍코딍
전체 방문자
오늘
어제
  • 분류 전체보기 (271)
    • 개발 (2)
    • Java (1)
    • 스프링 (28)
    • JPA (11)
    • Git (3)
    • 알고리즘 (160)
      • 백준 (132)
      • 프로그래머스 (8)
      • SWEA (20)
    • 토이 프로젝트 (14)
      • 간단한 Springboot CRUD (1)
      • 게시판 프로젝트 (13)
    • 알고리즘 개념정리 (8)
    • 오류 해결 (13)
    • 보류 (0)
    • AWS (5)
    • 트러블 슈팅 (0)
    • 회고 (3)
    • CS (4)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

최근 글

티스토리

hELLO · Designed By 정상우.
코딍코딍

코딩기록

알고리즘/백준

18310번 : 안테나

2022. 7. 23. 16:21

https://www.acmicpc.net/problem/18310

 

18310번: 안테나

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

www.acmicpc.net

 

 

문제

 

 

코드

import java.util.Arrays;
import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt(); sc.nextLine();
        String s[] = sc.nextLine().split(" ");
        Integer home[] = new Integer[n];
        
        for(int i=0;i<n;i++) {
            home[i] = Integer.parseInt(s[i]);
        }
        Arrays.sort(home);
        
        int index;
        if(n%2==0) {
            index = n/2-1;
        }else {
            index = n/2;
        }

        System.out.println(home[index]);

    }
}

 

 

해결방법

정답률이 34%길래 풀기 전에 좀 쫄았는데 풀고 나니 왜 34%인지 모르겠다.

집의 위치가 주어졌을 때 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되려면 집 위치의 중간에 안테나를 설치하면 된다. 어찌 보면 당연한 것이긴 하다. 고로 집들의 위치를 정렬해서 중간인 집 위치를 출력해주면 되는데 집의 개수가 짝수개인 경우는 정확히 집의 중간이 없으므로 중간 위치에 있는 집 2개 중 더 작은 위치를 가진 집을 출력해주면 문제는 해결된다. 왜냐하면 중간 위치에 있는 집 2개는 안테나 설치 시 총 합의 값이 같기 때문이다.

'알고리즘 > 백준' 카테고리의 다른 글

2012번 : 등수 매기기  (0) 2022.07.26
2839번 : 설탕 배달  (0) 2022.07.24
10815번 : 숫자 카드  (0) 2022.07.20
11497번 : 통나무 건너뛰기  (0) 2022.07.20
1417번 : 국회의원 선거  (0) 2022.07.19
    '알고리즘/백준' 카테고리의 다른 글
    • 2012번 : 등수 매기기
    • 2839번 : 설탕 배달
    • 10815번 : 숫자 카드
    • 11497번 : 통나무 건너뛰기
    코딍코딍
    코딍코딍
    ㅎ2

    티스토리툴바