알고리즘/이코테 알고리즘 유형별 기출문제

[정렬] 이코테 (파이썬) 안테나 풀이

개발윗미 2021. 12. 6. 14:18

[문제]

일직선상의 마을에 여러 채의 집이 위치해 있습니다. 이 중에서 특저 위치의 집에 특별히 한 개의 안테나를 설치하기로

 

결정했습니다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총합이 최소가 되도록 설치하려고 합니다.

 

이때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능합니다.

 

집들의 위치 값이 주어질 때, 안테나를 설치할 위치를 선택하는 프로그램을 작성하세요.

 

예를 들어 N = 4이고, 각 위치가 1, 5, 7, 9일 때를 가정하겠습니다.

 

이 경우 5의 위치에 설치했을 때, 안테나로부터 모든 집까지의 거리의 총합이 (4 + 0 + 2 + 4) = 10으로, 최소가 됩니다.

 

[입력 조건]

1. 첫째 줄에 집의 수 N이 자연수로 주어집니다. (1 <= N <= 200,000)

 

2. 둘째 줄에 N채의 집에 위치가 공백으로 구분되어 1 이상 100,000 이하의 자연수로 주어집니다.

 

[출력 조건]

첫째 줄에 안테나를 설치할 위치의 값을 출력합니다. 단, 안테나를 설치할 수 있는 위치 값으로 여러 개의

 

값이 도출될 경우 가장 작은 값을 출력합니다.

<입력 예시>
4
5 1 7 9
<출력 예시>
5

 

[풀이]

n = int(input())
data = list(map(int, input().split()))
data.sort()

# 중간값 출력
print(data[(n-1) // 2])

 

1. 리스트 형태로 구성하여 값들을 입력 받고, 오름차순으로 정렬을 수행한다.

 

2. 단순히 중간값을 출력함으로써 문제를 해결할 수 있다.

 


출처

이것이 코딩 테스트다 with 파이썬 - 나동빈 저