문제 링크

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWQl9TIK8qoDFAXj&categoryId=AWQl9TIK8qoDFAXj&categoryType=CODE

핵심 아이디어

높이가 n 이면

흰칸+파란칸+빨간칸 = n 이어야 하고 각 칸은 1보다 커야함

$n-3P3$ 만큼 경우의 수가 발생함

T = int(input())
 
 
for test_case in range(1,T+1):
    h,w = map(int, input().split())
    board = [list(input()) for _ in range(h)]
    answer = w*h
 
     
    for a in range(1,h):
        for b in range(1,h):
            for c in range(1,h):
                if a+b+c > h:
                    break
								//빨간 파랑 흰 칸 의 합이 높이와 같으면 바꿀 칸의 수 계산
                if a+b+c==h:
                    tmp=0
                    for i in range(h):
                        for j in range(w):
                            if 0<=i< a:
                                if board[i][j]!="W":
                                    tmp+=1
                            if a<=i<a+b:
                                if board[i][j]!="B":
                                    tmp+=1
                            if a+b<=i<h:
                                if board[i][j]!="R":
                                    tmp+=1
                    #print(a,b,c,tmp)
                    answer=min(answer,tmp)
    print(f'#{test_case} {answer}')