[Python]1018번 체스판 다시 칠하기

유한성·2023년 1월 17일

알고리즘

목록 보기
12/22

문제보기

해결코드

n, m = map(int,input().split())
a = []
result = []
for _ in range(n):
    a.append(list(map(str, input())))
cnt = 0
# 8*8 나눌 수 있는 모든 보드에 대해서 검사하기
for i in range(0, n-7):
    for j in range(0, m-7):
        count1 = 0
        count2 = 0
        # 8*8 보드를 하나씩 검사하기
        for x in range(i, i+8):
            for y in range(j, j+8):
                # 인덱스 합이 짝수인 경우 일정한 색 가지게 됨.
                if (x+y) % 2 == 0:
                    # 0,0 값이 B이면 W인 경우에 숫자를 증가
                    if a[x][y] != 'W':
                        count1 += 1
                    # 0,0 값이 W이면 B인 경우에 숫자를 증가
                    if a[x][y] != 'B':
                        count2 += 1
                # 인덱스 합이 홀수인 경우 일정한 색
                else:
                    # 0,0 값이 W이면 B인 경우에 숫자를 증가
                    if a[x][y] != 'W':
                        count2 += 1
                    # 0,0 값이 B이면 W인 경우에 숫자를 증가
                    if a[x][y] != 'B':
                        count1 += 1
        result.append(count1)
        result.append(count2)

print(min(result))

  • 8 X 8 으로 체스판을 잘라서 검사
  • 행,열의 합이 짝수인 경우와 홀수인 경우에는 일정한 문자를 가져야 하므로 이를 기준으로 count1 값과 count2 값을 증가시킴
  • 배열에 count 값들을 저장하고 제일 작은 숫자를 출력

0개의 댓글