1. 문제와 예제
2. 코드
import sys
input = sys.stdin.readline
# 입력 받기
N, M = map(int, input().split())
res = []
# 보드 2차원 배열로 만들기
# ex. board = ['WBWBWBWB', 'BWBWBWBW', 'WBWBWBWB', ...]
board = []
for _ in range(N):
board.append(input().rstrip())
# (i, j)를 기준으로 8*8 배열에 대해
for i in range(N-8+1):
for j in range(M-8+1):
# 다시 칠해야 하는 정사각형의 최소 개수
cnt = 0
for r in range(i, i+8):
for c in range(j, j+8):
if ((r+c) % 2 == 0):
if (board[r][c] != 'W'):
cnt += 1
else:
if (board[r][c] != 'B'):
cnt += 1
# 왼쪽 상단이 W인 체스판을 기준으로 개수를 셌으므로 왼쪽 상단이 B인 체스판아 기준일 때랑 비교해야 함
res.append(min(cnt, 64-cnt))
print(min(res))
3. 풀이
예제 2를 활용해서 생각했다. 8*8 배열을 잡아서 확인하는 과정을 반복한다는 점을 생각하면 코드를 구현할 수 있다.
'백준' 카테고리의 다른 글
[백준] 2164번 파이썬 (카드2) (0) | 2024.03.20 |
---|---|
[백준] 1920번 파이썬 (수 찾기) (0) | 2024.03.20 |
[백준] 11866번 파이썬 (요세푸스 문제 0) (0) | 2024.03.18 |
[백준] 11651번 파이썬 (좌표 정렬하기 2) (0) | 2024.03.18 |
[백준] 11650번 파이썬 (좌표 정렬하기) (0) | 2024.03.17 |