문제
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
답
설계
답
N,M = map(int, input().split())
board=[input() for _ in range(N)]
def count_mismatch(start_row,start_col):
misB = 0
for i in range(8):
for j in range(8):
ans = 'B' if (i+j) % 2 == 0 else 'W'
if board[start_row+i][start_col+j] != ans:
misB += 1
misW = 64 - misB
mis = min(misB, misW)
return mis
min_mis = 64
for i in range(N-7):
for j in range(M-7):
min_mis = min(min_mis, count_mismatch(i,j))
print(min_mis)
핵심
ans = 'B' if (i+j) % 2 == 0 else 'W'
체스판 맨 왼쪽 위가 B라고 가정하면, 행(i) 열(j)의 합이
짝수면 B, 홀수면 W 이어야 한다.
(i, j 는 0부터 시작)
'백준' 카테고리의 다른 글
[백준 25305번] 커트라인 (파이썬) (3) | 2024.03.05 |
---|---|
[백준 2587번] 대표값2 (파이썬) (1) | 2024.03.04 |
[백준 2750번] 수 정렬하기 (파이썬) (0) | 2024.03.04 |
[백준 2839번] 설탕 배달 (파이썬) (0) | 2024.03.01 |
[백준 1436번] 영화감독 숌 (0) | 2024.02.25 |