728x90
반응형
이분 탐색 문제이다. 2차원 리스트의 총합과 최댓값을 알아야 문제를 풀 수 있어서 코드가 좀 길어진 것 같다.
def count(li, m, N):
t = 0
for i in range(N):
for j in range(N):
t += (m if m <= li[i][j] else li[i][j])
return t
N = int(input())
li = []
max_li = sum_li = 0
for _ in range(N):
a = list(map(int, input().split()))
li.append(a)
max_li = max(max_li, max(a))
sum_li += sum(a)
s, e = 0, max_li
res = 0
while s <= e:
m = (s+e)//2
if count(li, m, N) >= sum_li/2:
res = m
e = m-1
else:
s = m+1
print(res)
728x90
반응형
'Agorithm > 백준 알고리즘' 카테고리의 다른 글
백준 알고리즘 8949번 대충 더해(python) (0) | 2021.02.28 |
---|---|
백준 알고리즘 14490번 백대열(python) (0) | 2021.02.28 |
백준 알고리즘 16564번 히오스 프로게이머(python) (0) | 2021.02.28 |
백준 알고리즘 16401번 과자 나눠주기(python) (0) | 2021.02.28 |
백준 알고리즘 19637번 IF문 좀 대신 써줘(python) (0) | 2021.02.28 |