import sys
from itertools import combinations
def input():
return sys.stdin.readline().rstrip()
N = int(input())
arr = [list(map(int,input().split())) for _ in range(N)]
row = [sum(i) for i in arr]
col = [sum(i) for i in zip(*arr)]
new_arr = [i+ j for i, j in zip(row, col)]
total_sum = sum(new_arr)//2
result = float('inf')
for num in range(1,N//2+1):
for combi in combinations(new_arr,num):
result = min(result,abs(total_sum-sum(combi)))
if result == 0:
break
if result == 0:
break
print(result)
이 문제는 과거에 푼 boj.kr/14889 이 있었기 때문에 빨리 풀 수 있었다.
기본 푼 방식은 원래와 똑같다. 각 col,row의 섬을 미리 구해놓고, 그걸 통해서 문제를 푸는 방식이다.
'알고리즘 > 백준' 카테고리의 다른 글
[BOJ/백준] 16472 고냥이 (0) | 2021.06.29 |
---|---|
[BOJ/백준] 16398 행성 연결 (0) | 2021.06.29 |
[BOJ/백준] 10711 모래성 (0) | 2021.06.29 |
[BOJ/백준] 2463 비용 (0) | 2021.06.29 |
[BOJ/백준] 1398 동전 (0) | 2021.06.29 |