코딩테스트/BOJ

[그리디] 2141. 우체국

박소민 2023. 6. 28. 20:50
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, 1 ≤ A[i] ≤ 1,000,000,000 이며 모든 입력은 정수이다.

www.acmicpc.net

 

  • 다른 사람 풀이
    • 사람수만큼 가산을 가진 중간지점 찾기위해서
    • '누적 인구수가 절반을 넘어가는 지점' 찾기
n = int(input())
total = 0
X = []
for i in range(1, n+1):
    x, a = map(int, input().split())
    X.append([x, a])
    total += a

X.sort(key=lambda x: x[0])
cnt = 0
for i in range(n):
    cnt += X[i][1]
    if cnt >= total/2:
        print(X[i][0])
        break