관리 메뉴

100세까지 코딩

[백준] 1018번 체스판 다시 칠하기 (파이썬) 본문

코딩테스트/파이썬

[백준] 1018번 체스판 다시 칠하기 (파이썬)

100세까지 코딩 2024. 1. 19. 18:14
문제

나의 생각
  • 2차원 배열로 입력 받는다.
  • 8 X 8 크기의 2차원 배열을 모든 곳에 갖다대봐야한다.
  • 체스판을 색칠하는 경우는 흰색으로 시작하거나 검은색으로 시작하는 2개의 경우가 전부다.
  • 규칙을 찾아 반복문을 통해 답을 찾아 낸다.
나의 풀이
n, m = map(int, input().split())
map_list = [list(input()) for _ in range(n)]
result = list()

for i in range(n - 7):  # 인덱스를 넘지 않기 위해
    for j in range(m - 7): # 인덱스를 넘지 않기 위해
        another = 0
        another2 = 0

        for k in range(i, i + 8):  # 8크기만큼 순회
            for l in range(j, j + 8): # 8크기만큼 순회
                if (k + l) % 2 != 0: # 규칙
                    if map_list[k][l] != "W":
                        another += 1
                    if map_list[k][l] != "B":
                        another2 += 1
                else:
                    if map_list[k][l] != "B":
                        another += 1
                    if map_list[k][l] != "W":
                        another2 += 1
        result.append(another)
        result.append(another2)
print(min(result))