[백준] 2141 - 우체국 (그리디)

김영민·2024년 8월 18일
0

코딩테스트

목록 보기
19/32


코드

n = int(input())
maps = []
sum_population = 0
for _ in range(n):
    town, population = map(int, input().split())
    maps.append([town, population])
    sum_population += population

half_population = sum_population // 2       # 절반을 넘어가면 거기가 최적?임
maps.sort(key = lambda x: x[0])

for town, population in maps:
    sum_population -= population
    if sum_population <= half_population:
        print(town)
        break

풀이

  • 가중치 중위값 문제이다.
  • 전체 가중치의 중간값이 되는 지점에 우체국을 세우면 되는 문제이다.
  • 이렇게 중간에 세우는 문제에 대해 유의

0개의 댓글