본문 바로가기
Python/브루트 포스

[Algorithm] 백준 1018 체스판 다시 칠하기 | 파이썬

by 유일리 2024. 8. 2.

※ 1018 체스판 다시 칠하기

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

 

문제 해결 TIP

입력으로 주어진 맵(그래프)에서 8x8 크기로 자른 후, 가능한 두 가지 맵(그래프)과 비교하는 문제이다. 가능한 두 가지 그래프는 다음과 같다. 두 그래프와 동시에 비교해가며, 첫번째 그림과 다를 경우 count_1에 1씩 추가, 두번째 그림과 다를 경우 count_2에 1씩을 추가해준다. 이후 최값을 출력한다.

 

전체 코드

N, M = map(int,input().split())
graph = []
answer = []
for i in range(N):
    graph.append(list(map(str,input())))

for i in range(N-7):
    for j in range(M-7):
        count_1 = 0
        count_2 = 0

        #8x8 크기로 자르기
        for a in range(i,i+8):
            for b in range(j,j+8):
                if (a+b)%2 == 0:
                    #graph1과 다르다면
                    if graph[a][b] != 'B':
                        count_1 += 1
                    #graph2와 다르다면
                    if graph[a][b] != 'W':
                        count_2 += 1
                else:
                    #graph1과 다르다면
                    if graph[a][b] != 'W':
                        count_1 += 1
                    #graph2와 다르다면
                    if graph[a][b] != 'B':
                        count_2 += 1
        answer.append(count_1)
        answer.append(count_2)
print(min(answer))

댓글