728x90
반응형
풀기 전 생각해보기😮
- 이차원 배열의 탐색
풀이🛫
N, M = map(int, input().split()) # N개의 행, M개의 열
arr = [list(input()) for _ in range(N)]
white = [[0] * 8 for _ in range(8)]
black = [[0] * 8 for _ in range(8)]
for col in range(8):
for row in range(8):
if (col+row)%2 == 0:
white[col][row] = 'W'
black[col][row] = 'B'
else:
white[col][row] = 'B'
black[col][row] = 'W'
li = []
for col in range(N-8+1):
for row in range(M-8+1):
wCnt, bCnt = 0, 0
for i in range(8):
for j in range(8):
if arr[col+j][row+i] != white[j][i]:
wCnt += 1
if arr[col+j][row+i] != black[j][i]:
bCnt += 1
li.append(wCnt)
li.append(bCnt)
print(min(li))
핵심 정리🎁
- 인덱스를 이용해서 체크판을 2개 만들어서 비교했다.
black : 'b'로 시작하는 체크판
white : 'w'로 시작하는 체크판 - 체크판(arr)의 각 지점에서 가로, 세로 8칸 만큼씩 비교해주었다.
일치하지 않는 값이 가장 적은 지점을 찾아 해당 값을 답으로 도출했다.
링크💎
후기 😎
- 이전에 한번 풀어보겠다고 악을 써도 안풀렸던 문제인데, 체계가 잡혔는지 오랜만의 도전에 풀어낼 수 있었다.
'Algorithm Study > Python' 카테고리의 다른 글
[백준 파이썬] #2146. 다리만들기 (0) | 2022.11.06 |
---|---|
[백준 파이썬] #14503. 로봇청소기 (1) | 2022.11.03 |
[백준 파이썬] #2605 줄세우기 (0) | 2022.08.27 |
[백준 파이썬] #2309 일곱 난쟁이 (0) | 2022.08.20 |
[백준 파이썬] #4396 지뢰 찾기 (0) | 2022.08.17 |