반응형
알고리즘 분류
- 브루트포스 알고리즘
SOLUTION
import sys
N, M = map(int, sys.stdin.readline().split())
chess = [sys.stdin.readline().rstrip() for _ in range(N)] # 체스판 형성
min_cnt = []
for i in range(N-7): # 브루트포스 적용, 체스판 8x8 크기가 나올 수 있는 모든 경우의 수 탐색
for j in range(M-7):
cnt1 = 0
cnt2 = 0
for k in range(i, i+8): # 첫 칸을 검정색 기준으로 두고 검사하는 경우
for l in range(j, j+8):
if k % 2 == 0 and l % 2 == 0:
if chess[k][l] == "W":
cnt1 += 1
elif k % 2 == 1 and l % 2 == 1:
if chess[k][l] == "W":
cnt1 += 1
elif k % 2 == 0 and l % 2 == 1:
if chess[k][l] == "B":
cnt1 += 1
elif k % 2 == 1 and l % 2 == 0:
if chess[k][l] == "B":
cnt1 += 1
for k in range(i, i+8): # 첫 칸을 흰색 기준으로 두고 검사하는 경우
for l in range(j, j+8):
if k % 2 == 0 and l % 2 == 0:
if chess[k][l] == "B":
cnt2 += 1
elif k % 2 == 1 and l % 2 == 1:
if chess[k][l] == "B":
cnt2 += 1
elif k % 2 == 0 and l % 2 == 1:
if chess[k][l] == "W":
cnt2 += 1
elif k % 2 == 1 and l % 2 == 0:
if chess[k][l] == "W":
cnt2 += 1
min_cnt.append(min(cnt1, cnt2)) # 두 케이스를 비교해 적은 값을 append
print(min(min_cnt)) # 가장 작은 값 출력
'코딩테스트 대비 > BOJ' 카테고리의 다른 글
[Baekjoon/Python] 2609번: 최대공약수와 최소공배수 - 효과는 굉장했다! (0) | 2021.10.24 |
---|---|
[Baekjoon/Python] 1181번: 단어 정렬 - 효과는 굉장했다! (0) | 2021.10.10 |
[Baekjoon/Python] 11050번: 이항 계수 1 - 효과는 굉장했다! (0) | 2021.10.08 |
[Baekjoon/Python] 2231번: 팰린드롬수 - 효과는 굉장했다! (0) | 2021.10.08 |
[Baekjoon/Python] 15829번: Hasing - 효과는 굉장했다! (0) | 2021.10.08 |