본문 바로가기
백준

백준25682 체스판 다시 칠하기 2

by 콩순이냉장고 2025. 1. 10.

문제 URL : https://www.acmicpc.net/problem/25682

 

소스코드 :

2차원 누적합 문제입니다.

정사각형이니

좌상단을 b로 잡을때와 혹은 w로 잡을때

의 보드를 이용한다면 dp가 2개가 필요할겁니다

 

소스코드:

 

n,m,k = map(int,input().split())
l =[input() for i in range(n)]
board=[[0]*(m+1) for i in range(n+1)]
board2=[[0]*(m+1) for i in range(n+1)]
for i in range(n):
    for j in range(m):
        board[i+1][j+1] = board[i][j+1]+board[i+1][j]-board[i][j]
        board2[i+1][j+1] = board2[i][j+1]+board2[i+1][j]-board2[i][j]
        if (i+j)%2 ==0 :
            if l[i][j]=='W':
                board[i+1][j+1]+=1
            else :
                board2[i+1][j+1]+=1
        else:
            if l[i][j]=='B':
                board[i+1][j+1]+=1
            else :
                board2[i+1][j+1]+=1

res = int(1e9)
for i in range(n-k+1):
    for j in range(m-k+1):
        res = min(res,board[i+k][j+k]+board[i][j]-board[i+k][j]-board[i][j+k])
        res = min(res,board2[i+k][j+k]+board2[i][j]-board2[i+k][j]-board2[i][j+k])
print(res)

 

 

 

 

궁금한점 혹은 모르는점 어떤 질문이든 댓글은 언제나 환영입니다.

'백준' 카테고리의 다른 글

백준 4013 ATM  (0) 2025.01.15
백준 2152 여행 계획 세우기 성공  (0) 2025.01.15
백준 18290 NM과 K (1)  (0) 2025.01.05
백준 1662 압축(python)  (0) 2025.01.01
백준 6236 용돈관리 (python)  (0) 2025.01.01