문제
알고리즘
- 반복문을 통해 체스판을 확인한다. 이때, 8X8 체스판의 크기만큼 잘라 확인한다.
- W로 시작하는 경우와 B로 시작하는 경우를 나누어 확인한다.
- 8X8 범위 체스판을 확인할 때 행과 열의 합이 짝수, 홀수이면 각각 일정한 색을 가지게 된다.(체크무늬)
- 각각 일정한 색을 가질 때 다른 색을 가지는 경우를 카운트하여 제일 적은 경우를 출력한다.
코드
import sys
n, m = map(int, sys.stdin.readline().split())
graph = [list(map(str, sys.stdin.readline().strip())) for _ in range(n)]
cnt = []
# 반복문을 통해 체스판을 확인(8x8 범위로 짜른다.)
for i in range(n - 7):
for j in range(m - 7):
w = 0 # w로 시작하는 경우
b = 0 # b로 시작하는 경우
# 8x8 범위 체스판을 확인
for k in range(i, i + 8):
for l in range(j, j + 8):
# 행과 열의 합이 짝수, 홀수이면 각각 일정한 색을 가지게 된다.
if (l + k) % 2 == 0:
if graph[k][l] != 'W':
w += 1
else:
b += 1
else:
if graph[k][l] != 'B':
w += 1
else:
b += 1
cnt.append(w)
cnt.append(b)
# 일정한 색중에 제일 적은 다른 색의 개수를 출력
print(min(cnt))
github
'CodingTest > Baekjoon' 카테고리의 다른 글
[baekjoon] 백준 1246번(파이썬): 온라인 판매 (0) | 2022.03.08 |
---|---|
[baekjoon] 백준 1037번(파이썬): 약수 (0) | 2022.03.07 |
[baekjoon] 백준 8911번(파이썬): 거북이 (0) | 2022.02.16 |
[baekjoon] 백준 6603번(파이썬): 로또 (0) | 2022.02.15 |
[baekjoon] 백준 4948번(파이썬): 베르트랑 공준 (0) | 2022.02.14 |