1. 비트마스크로 동전의 가로를 뒤집고 안뒤집은 경우를 모두 확인한다.
2. 세로에서 뒤집힌 동전의 수가 더 적으면 그대로 놔두고 더 많으면 뒤집는다.
n = int(input())
coin = [list(input()) for _ in range(n)]
ans = n * n + 1
for bit in range(1 << n):
tmp = [coin[i][:] for i in range(n)]
for i in range(n):
if bit & (1 << i):
for j in range(n):
if tmp[i][j] == 'H':
tmp[i][j] = 'T'
else:
tmp[i][j] = 'H'
tot = 0
for i in range(n):
cnt = 0
for j in range(n):
if tmp[j][i] == 'T':
cnt += 1
tot += min(cnt, n-cnt)
ans = min(ans, tot)
print(ans)
'알고리즘 > BOJ' 카테고리의 다른 글
[Python] 백준 2613: 숫자구슬 (0) | 2021.09.14 |
---|---|
[Python] 백준 16120번: PPAP (0) | 2021.09.14 |
[Python] 백준 1135번: 뉴스 전하기 (0) | 2021.09.14 |
[Python] 백준 3687번: 박스 채우기 (0) | 2021.09.14 |
[Python] 백준 1493번: 박스 채우기 (0) | 2021.09.14 |
댓글