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

공학도 Lee·2023년 2월 8일
0

백준 문제 풀이

목록 보기
26/63

1. 문제


출처: 백준 1018번 체스판 다시 칠하기

2. 풀이


가능한 체스판의 경우는 BW가 반복되는 경우와 WB가 반복되는 경우가 있다.

주어진 보드를 8×88 \times 8로 쭉 잘라보면서, 위의 두 가지 경우와 얼마나 차이가 나는지 확인해 보면 된다.

3. 소스코드


N, M = map(int,input().split())

candidate1 = [["W","B"]*4,["B","W"]*4]*4
candidate2 = [["B","W"]*4,["W","B"]*4]*4
origin = [input() for _ in range(N)]
result = 8*8

for i in range(N-7):
    for j in range(M-7):
        diff_1=0
        diff_2=0
        for k in range(8):
            for l in range(8):
                if origin[i+k][j+l] != candidate1[k][l]:
                    diff_1+=1
                if origin[i+k][j+l] != candidate2[k][l]:
                    diff_2+=1
        if result > diff_1:
            result = diff_1
        if result > diff_2:
            result = diff_2
print(result)

4. 그 외


이번 문제는 단순하지만, 보드의 크기가 커질 경우 다른 알고리즘으로 접근해야 한다.
다음 단계의 문제들에서 해당 방법들도 정리해 보고자 한다.

profile
이창민, Changmin Lee

0개의 댓글