[코테 스터디] 정렬, 안테나

SSO·2022년 4월 27일
0

알고리즘

목록 보기
24/48

Q24. 안테나

🐣문제

일직선 상의 마을에 여러 채의 집이 위치해 있다. 이중에서 특정 위치의 집에 특별히 한 개의 안테나를 설치하기로 결정했다. 효율성을 위해 안테나로부터 모든 집까지의 거리의 총 합이 최소가 되도록 설치하려고 한다. 이 때 안테나는 집이 위치한 곳에만 설치할 수 있고, 논리적으로 동일한 위치에 여러 개의 집이 존재하는 것이 가능하다.


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


백준 링크 | https://www.acmicpc.net/problem/18310

🐥풀이

풀이랄 것도 없다..!
당연히 안테나가 중앙에 위치하는 것이 모든 집까지의 거리의 총 합이 최소가 될 것이다.
따라서, 중앙의 위치에 안테나를 두면 되는 것-!
집이 홀수 개이면 딱 중앙에 둘 수 있고, 짝수 개이면 중앙에서 왼쪽에 위치하는 지점에 안테나를 두면 된다. ( (집의 개수)/2에서 버림한 값)

🐓코드

n = int(input())
house = sorted(list(map(int, input().split()))) # 집 정보 입력받고 정렬

if n%2==0:  # 짝수
  print(house[n//2-1])
else:       # 홀수
  print(house[n//2])

⭐2022.04.27

정렬에서는 수학적 직관력이 젤 필요로 되는 것 같다!

profile
쏘's 코딩·개발 일기장

0개의 댓글