문제설명
이 문제는 가능한 모든 경우의 수를 for loop을 통하여 접근하여 최솟값을 결정하는 문제입니다. 파이썬의 List slicing 기능을 이용하여 주어진 문제를 보다 쉽게 해결할 수 있었습니다.
체스판 다시 칠하기(#1018) 파이썬 코드
import sys
#입력
M, N = map(int, input().split())
inp = []
for i in range(M):
inp.append(sys.stdin.readline())
# 체스판 자르기
def cut_board(first_board):
length = len(first_board)
width = len(first_board[0])
board_list = []
for w in range(width - 7):
for l in range(length - 7):
board = []
for i in range(8):
board.append(list(first_board[l+i][w:w+8]))
board_list.append(board)
return board_list
# 바뀐 횟수 체크
def cnt_change(board):
cnt1 = 0
cnt2 = 0
for i in range(8):
for j in range(8):
if (i + j) % 2 == 0:
if board[i][j] != 'W':
cnt1 += 1
else:
if board[i][j] != 'B':
cnt1 += 1
if (i + j) % 2 == 0:
if board[i][j] != 'B':
cnt2 += 1
else:
if board[i][j] != 'W':
cnt2 += 1
return min(cnt1, cnt2)
# 결과 출력
board_list = cut_board(inp)
min_cnt = 12345678765
for board in board_list:
min_cnt = min(cnt_change(board), min_cnt)
print(min_cnt)
'백준 문제풀이 > 브루트포스(Bruteforce)' 카테고리의 다른 글
백준 온라인 저지 - 덩치(#7568) 파이썬 (0) | 2021.08.16 |
---|---|
백준 온라인 저지 - 분해합(#2231) 파이썬 (0) | 2021.08.13 |
백준 온라인 저지 - 블랙잭(#2798) 파이썬 (0) | 2021.08.12 |