언어, 알고리즘 공부/백준
[백준 알고리즘] 1018번 체스판 다시 칠하기 (Python)
쿠몬e
2020. 4. 17. 18:37
<Python>
N, M = map(int, input().split())
chess = [list(input()) for _ in range(N)]
min_cnt = 64
b_start = []
w_start = []
for i in range(8):
if i % 2 == 0:
b_start.append(list(['B', 'W', 'B', 'W', 'B', 'W', 'B', 'W']))
w_start.append(list(['W', 'B', 'W', 'B', 'W', 'B', 'W', 'B']))
else:
w_start.append(list(['B', 'W', 'B', 'W', 'B', 'W', 'B', 'W']))
b_start.append(list(['W', 'B', 'W', 'B', 'W', 'B', 'W', 'B']))
for i in range(N - 7):
for j in range(M - 7):
w_cnt = 0
b_cnt = 0
# b로 시작하는 체스판과 비교하여 cnt 세기
for k in range(i, i + 8):
for s in range(j, j + 8):
if b_start[k-i][s-j] != chess[k][s]:
b_cnt += 1
# w로 시작하는 체스판과 비교하여 cnt세기
for k in range(i, i + 8):
for s in range(j, j + 8):
if w_start[k-i][s-j] != chess[k][s]:
w_cnt += 1
min_cnt = min(min_cnt, min(b_cnt, w_cnt))
print(min_cnt)
▼링크
https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
반응형