티스토리 뷰
https://www.acmicpc.net/problem/1018
👩💻문제 이해
브루트포스 알고리즘을 이용해 주어진 배열을 모두 돌며 다시 칠해야하는 부분을 카운트하고 최소값을 찾는다.
맨 위 왼쪽 체스판이 흰색인 경우, 검은색인 경우로 나누어 다시 칠해야 하는 수를 확인 해야한다.
👩💻반복문을 사용해 모든 경우 체크 : 성공🌈
n, m=map(int,input().split())
# n행, m열
arr = []
cnt=[]
for i in range(n):
arr.append(input())
for a in range(n-7):
for b in range(m-7):
# n-7, m- 7 : 8*8로 자르기 위해
w_index = 0 # 흰색으로 시작
b_index = 0 # 검은색으로 시작
for i in range(a, a+8):
for j in range(b,b+8):
if (i+j)%2==0:
# 짝수인 경우, 첫 번째 값과 같아야함
if arr[i][j]!='W':
# W가 아니면
w_index+=1
# W로 칠하는 갯수
else:# W일 때
b_index+=1
# B로 칠하는 갯수
else:
# 홀수인 경우, 첫 번째 값과 달라야 함
if arr[i][j]!='W':
# W가 아니면
b_index+=1
# B로 칠하는 갯수
else:
w_index+=1
# W로 칠하는 갯수
cnt.append(w_index) # W로 시작할 때 경우의 수
cnt.append(b_index) # B로 시작할 때 경우의 수
print(min(cnt))
'🦖 Programming > Python' 카테고리의 다른 글
[Python] 백준 알고리즘 2776번 : 암기왕 (1) | 2022.09.20 |
---|---|
[Python] 백준 알고리즘 1654번 : 랜선 자르기 (0) | 2022.09.19 |
[Python] 백준 알고리즘 11478번 : 서로 다른 부분 문자열의 개수 (0) | 2022.09.13 |
[Python] 백준 알고리즘 1920번 : 수 찾기 (0) | 2022.09.13 |
[Python] 백준 알고리즘 1436번 : 영화감독 숌 (0) | 2022.09.08 |
댓글