알고리즘/BOJ
[Python] 백준 1285번: 동전 뒤집기
PIAI
2021. 9. 14. 17:34
1285번: 동전 뒤집기
첫째 줄에 20이하의 자연수 N이 주어진다. 둘째 줄부터 N줄에 걸쳐 N개씩 동전들의 초기 상태가 주어진다. 각 줄에는 한 행에 놓인 N개의 동전의 상태가 왼쪽부터 차례대로 주어지는데, 앞면이 위
www.acmicpc.net
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)