728x90
반응형
구현 언어: 파이썬
import copy
def cntBlocks(input_list):
blackFirstCnt = 0
whiteFirstCnt = 0
for i in range(8):
for j in range(8):
if (i + j) % 2 == 0:
if input_list[i][j] != True: whiteFirstCnt += 1
if input_list[i][j] != False: blackFirstCnt += 1
else:
if input_list[i][j] != False: whiteFirstCnt += 1
if input_list[i][j] != True: blackFirstCnt += 1
return min(blackFirstCnt, whiteFirstCnt)
def stringToCharList(list):
new_list = [[0 for i in range(len(list[0]))] for j in range(len(list))]
for i in range(0, len(new_list)):
for j in range(0, len(new_list[0])):
# 흰색은 True, 검은색은 False로 매핑하여 저장
new_list[i][j] = True if list[i][j] == 'W' else False
return new_list
board = []
cases = []
n, m = map(int, input().split())
for i in range(0, n):
board.append(input())
board = stringToCharList(board)
for i in range(0, n - 8 + 1):
for j in range(0, m - 8 + 1):
curr_list = [[0 for a in range(8)] for b in range(8)]
for a in range(0, 8):
for b in range(0, 8):
# print(a, b, a+i, b+j)
curr_list[a][b] = board[a+i][b+j]
# print(curr_list)
cases.append(cntBlocks(curr_list))
print(min(cases))
시도 횟수: 3
구현 포인트:
생각을 잘 하자 ..
여기서는 cntBlocks()에 해당하는 알고리즘 부분이 가장 중요했던 문제
728x90
반응형
'Archive > BOJ' 카테고리의 다른 글
백준 1978번: 소수 찾기 (0) | 2021.02.07 |
---|---|
백준 10814번: 나이순 정렬 (0) | 2021.02.07 |
백준 11050번: 이항 계수 1 (0) | 2021.02.06 |
1259번: 팰린드롬수 (0) | 2021.02.06 |
백준 2798번: 블랙잭 (0) | 2021.02.06 |