[백준/Python] 10181 체스판 다시 칠하기

재활용병·2024년 1월 12일
0

코딩 테스트

목록 보기
58/157

[백준/Python] 10181 체스판 다시 칠하기


풀이 코드 및 설명

import sys
n, m = map(int, sys.stdin.readline().split())
board = []
result = []
for _ in range(n):
    board.append(sys.stdin.readline().strip())

for i in range(n-7):
    for j in range(m-7):
        is_black = 0
        is_white = 0

        for k in range(i,i+8):
            for l in range(j, j+8):
                if (k+l) % 2 == 0:
                    if board[k][l] != 'B':
                        is_black +=1
                    if board[k][l] != 'W':
                        is_white +=1
                else:
                    if board[k][l] != 'W':
                        is_black +=1
                    if board[k][l] != 'B':
                        is_white +=1
        result.append(is_black)
        result.append(is_white)
print(result)
print(min(result))

위 문제에 접근하는 방법

  1. 8x8 로 자르기
    이 문제는 입력받은 n,m 을 이용해 8칸이므로 -7 한 값까지 반복하여 모든 경우의 수를 확인하면 된다.

  2. is_black, is_white 변수 이용
    위 변수는 체스판이 검정으로 시작했을 때, 하얀색으로 시작했을 때 얼마나 칠해야하는 지 저장하는 변수이다

  3. 체스판을 자르고 0,0 으로 하는 값이 i,j 일 때 8칸 확인하는 반복문을 만든다

  4. (k + l) % 2 를 이용
    체스판 좌표를 더한 값을 이용하는 방법인데
    0,0 0,1 0,2 0,3
    1,0 1,1 1,2 1,3
    2,0 2,1 2,2 2,3
    3,0 3,1 3,2 3,3

라고 하면
짝 홀 짝 홀
홀 짝 홀 짝
짝 홀 짝 홀
홀 짝 홀 짝

으로 체스 판 모양과 동일하다 이를 이용하는 것이다.

  1. 검정으로 시작했을 경우 모든 경우의 수, 하얀색으로 시작했을 경우 모든 경우의 수
    둘 중 작은 값을 선택하여 출력한다.
profile
코딩 말고 개발

0개의 댓글

관련 채용 정보