카테고리 없음
백준 2141 우체국
hw.kr
2022. 12. 24. 19:23
https://www.acmicpc.net/problem/2141
2141번: 우체국
첫째 줄에 N(1 ≤ N ≤ 100,000)이 주어진다. 다음 N개의 줄에는 X[1], A[1], X[2], A[2], …, X[N], A[N]이 주어진다. 범위는 |X[i]| ≤ 1,000,000,000, 0 ≤ A[i] ≤ 1,000,000,000 이며 모든 입력은 정수이다.
www.acmicpc.net
📌 해결 과정
우체국은 마을에 설치 하는 것이고,
우체국과 각 마을까지의 거리가 아니라 각 마을에 사는 사람들과의 거리 합을 기준으로 설치 할 위치를 정해야함에 유의해야 한다.
따라서, 설치 할 위치에 영향을 주는 것이 거리가 아닌 사람 수 임을 알 수 있다.
핵심은, 현재 마을의 양 옆에 마을 사람들의 수가 가장 균등하게 나눠지는지 판단하는 것이다.
그 기준은 현재 까지 더한 각 마을 사람들의 수의 합이 (전체 마을 사람들의 수 / 2) 보다 커지는지 비교해 보는 것이다.
📌 코드
import sys
input = sys.stdin.readline
N = int(input())
people_total = 0
datas = []
for _ in range(N):
viliage, people = map(int, input().split())
datas.append([viliage, people])
people_total += people
datas.sort(key=lambda x: x[0])
people_tmp = 0
mid = people_total / 2
for i in range(N):
people_tmp += datas[i][1]
if people_tmp >= mid:
print(datas[i][0])
break