728x90
https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
import sys
def solution():
n, m = map(int, sys.stdin.readline().split())
graph = [ list(sys.stdin.readline().strip()) for _ in range(n) ]
min_repaints = float("inf")
def count_repaints(start_row, start_col):
pattern1 = [ "BWBWBWBW", "WBWBWBWB" ] * 4
pattern2 = [ "WBWBWBWB", "BWBWBWBW" ] * 4
repaint1, repaint2 = 0, 0
for i in range(8):
for j in range(8):
if graph[start_row + i][start_col + j] != pattern1[i][j]:
repaint1 += 1
if graph[start_row + i][start_col + j] != pattern2[i][j]:
repaint2 += 1
return min(repaint1, repaint2)
for i in range(n-7):
for j in range(m-7):
min_repaints = min(min_repaints, count_repaints(i, j))
return min_repaints
print(solution())
n-7, m-7을 해주는 이유는 8x8 크기의 체스판을 확인하는 데 시작점을 지정하기 위해서입니다. 이후에 count_repaints() 함수를 실행해서 8x8 크기의 체스판을 탐색합니다.
728x90
'[Coding Test] > [백준]' 카테고리의 다른 글
[백준] 2178: 미로 탐색 (0) | 2022.06.27 |
---|---|
[백준] 7568: 덩치 (0) | 2022.06.24 |
[백준] 2798: 블랙잭 (0) | 2022.06.24 |
[백준] 2231: 분해합 (0) | 2022.06.24 |
[백준] 2869 python(파이썬) : 달팽이는 올라가고 싶다 - 상세해설 (0) | 2022.05.20 |