[백준] 1018번 체스판 다시 칠하기
1132 단어 CodingTestCodingTest
문제 출처 : https://www.acmicpc.net/problem/1018
정답 코드 💻
n,m= map(int,input().split())
board = []
cnt = []
for i in range(n) :
board.append(input())
for a in range(n-7) :
for b in range(m-7) :
idw = 0
idb = 0
for c in range(a,a+8) :
for d in range(b,b+8) :
if (c+d) % 2 == 0 :
if board[c][d] != 'W' :
idw += 1
if board[c][d] != 'B' :
idb += 1
else :
if board[c][d] != 'B':
idw += 1
if board[c][d] != 'W':
idb += 1
cnt.append(min(idw,idb))
print(min(cnt))
설명
👉🏻 8X8로 잘라야 해서 행을 i-7만큼, 열을 j-7만큼 고정시킨다.
그 후 i,j에서 i+8까지, j+8까지 전부 반복하면서 확인한다.
흰색이 먼저인 경우와 검은색이 먼저인 경우를 나누어 min()을 사용하여 최소값을 알아낸다.
느낀 점 ✏️
이 문제는 감도 안왔다. 브루트 포스 너무어려워😥
Author And Source
이 문제에 관하여([백준] 1018번 체스판 다시 칠하기), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@seeseal/백준-1018번-체스판-다시-칠하기저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)