백준 1018번 파이썬 풀이

홍태리·2022년 2월 11일
0

백준

목록 보기
5/9
post-thumbnail

코드가 지나치게 길어진 것 같지만... 일단 이번엔 여기까지만 하고 넘어가도록 하자. 안 그래도 갈 길이 멀다

#백준 1018번

def min_paint_count(N:int, M:int, board:list, chess_table_1:list, chess_table_2:list) -> int:
    min_count1 = 65; min_count2 = 65
    
    for i in range(8, N+1):
        for j in range(8, M+1):
            count1 = 0; count2 = 0
            p = 0
            for a in range(i-8, i):
                q = 0
                for b in range(j-8, j):
                    if board[a][b] != chess_table_1[p][q]:
                        count1 += 1
                    if board[a][b] != chess_table_2[p][q]:
                        count2 += 1
                    q += 1
                p += 1
            min_count1 = min(count1, min_count1)
            min_count2 = min(count2, min_count2)
    return min(min_count1, min_count2)

N, M = map(int, input().split())

board = []
for _ in range(N):
    board.append(list(map(str, input())))

chess_table_1 = []; chess_table_2 = []
for i in range(8):
    row1 = []; row2 = []
    for j in range(8):
        if j % 2 == 1:
            row1.append('W'); row2.append('B')
        else:
            row1.append('B'); row2.append('W')
    if i % 2 == 0:
        chess_table_1.append(row1)
        chess_table_2.append(row2)
    else:
        chess_table_1.append(row2)
        chess_table_2.append(row1)

print(min_paint_count(N, M, board, chess_table_1, chess_table_2))

맞았습니다

profile
스타트업을 준비하는 대학생입니다.

0개의 댓글