반응형

Prob


Approach

랜던함 8 X 8 선택 중 최솟값이므로 전수조사한다.

문제에 힌트가 있다. 맨 왼쪽 위 칸이 흰색인 경우와 검은색인 경우만 존재한다.

각 8 X 8판에서 맨 왼쪽 위 칸을 흰색인 경우와 검은색인 경우로 가정하여

색칠할 경우의 최솟값을 구한다.

이 계산을 모든 8 X 8에 대해 계산한다.


Code

def cal_cnt(board):
    cnt_w = 0
    cnt_b = 0
    
    for i in range(8):
        for j in range(8):
            #if board[0][0] == w
            if ((i + j) % 2 == 1 and board[i][j] == "W"):
                cnt_w += 1
            elif ((i + j) % 2 == 0 and board[i][j] == "B"):
                cnt_w += 1
            #if board[0][0] == b
            if ((i + j) % 2 == 0 and board[i][j] == "W"):
                cnt_b += 1
            elif ((i + j) % 2 == 1 and board[i][j] == "B"):
                cnt_b += 1
    return min(cnt_w, cnt_b)

if __name__ == "__main__" :
    N, M = map(int, input().split())
    board = []
    for i in range(N):
        board.append([ch for ch in input()])
    aws = 8 * 8

    for i in range(N - 7):
        for j in range(M - 7):
            slice_board = [one_row[j:j+8] for one_row in board[i:i+8]]
            cnt = cal_cnt(slice_board)
            aws = min(cnt, aws)

    print(aws)

 

출처

https://www.acmicpc.net/problem/1018

반응형

'프로젝트 > Baekjoon' 카테고리의 다른 글

BAEKJOON PYTHON 2750 수 정렬하기  (0) 2021.08.30
BAEKJOON PYTHON 1436 영화감독 숌  (0) 2021.08.23
BAEKJOON PYTHON 2231 분해합  (0) 2021.08.23
BAEKJOON PYTHON 7568 덩치  (0) 2021.08.23
BAEKJOON PYTHON 2798 블랙잭  (0) 2021.08.21
블로그 이미지

Refrin

일상생활 끄적 IT 프로젝트 끄적