
728x90
이번 문제는 문제자체를 이해하는데 조금 시간이 걸렸다.
이 문제의 핵심은
우체국은 마을 위치에 있어야 한다
인것 같다
n = int(input()) #마을의 개수 n
array = [] #빈 리스트 생성
for i in range(n):
x,y = map(int, input().split())
array.append([x,y]) #마을의 위치, 인구수 [(x,a)]
array = sorted(array, key = lambda i : i[0]) #마을 위치 순서대로 array를 배열
pop = 0
for i in range(n):
k = array[i][1] #인구수를 차례차례 더해서 총 인구수를 구한다.
pop = pop + k
mid = pop//2 #인구수의 중간값을 구하기 위해 2로 나눈 몫을 구한다
if (pop%2) != 0:
mid = mid + 1 #2로 나누어지지 않았을때는 올림을 해준다
pop_count = 0
for q,w in array:
pop_count = pop_count + w #pop_count에 인구수를 누적시킨다.
if pop_count >= mid: #누적된 인구수가 중간값과 같거나 넘어가는 순간
ans = q #그 순간의 위치를 ans로 저장
break
print(ans) #우체국의 위치 ans를 출력해준다.
12번째 라인에서 k = array[i][1] 을 생각하는데 시간이 좀 걸렸다
array 리스트에서 인구수만 더해주고 싶은데 리스트안에 리스트에서 2번째 원소를 뽑아내는 방법을 찾아봤다
그냥 리스트 옆에 대괄호 두개 붙여주면 된다.
'Algorithm' 카테고리의 다른 글
백준 알고리즘 파이썬(Python) 19598번 최소 회의실 개수 (0) | 2021.04.15 |
---|---|
백준 알고리즘 파이썬(Python) 2217번 로프 (0) | 2021.04.14 |
백준 알고리즘 파이썬(Python) 14916번 거스름돈 (0) | 2021.04.14 |
백준 알고리즘 파이썬(Python) 1541번 잃어버린 괄호 (0) | 2021.04.11 |
백준 알고리즘 파이썬(Python) 1931번 회의실 배정 (0) | 2021.04.11 |