★브루트포스는 단순 무식★[백준 파이썬 1018번]체스판 칠하기
2023. 4. 5. 15:49
728x90
반응형
https://www.acmicpc.net/problem/1018
import sys
import copy
A = list(map(int ,sys.stdin.readline().split()))
B = []
# 10 13 ==>[0][0]~[7][7] , [0][1]~[7][8] ~~~ [7] [12] ==> 6번
# ==>[1][0]~[8][7] , [1][1]~[8][8]~~~[8][12] ==> 6
# ==>....[2][0]~[9][7] , ~~~ ==> 6개
# ==> 18개
res =[]
cnt = 0
for i in range(A[0]):
B.append(list(sys.stdin.readline().rstrip()))
for a in range(A[0]-7): # 가로(행)
for b in range(A[1]-7): # 세로(열)
w_index = 0
b_index = 0
for i in range(a, a+8): # 8x8을 위해 8번 반복해야함 , 열(세로)
for j in range(b, b+8): # 행(가로)
if (i+j)%2==0:#짝수인 경우 ==> 첫번째 부터 실행
if B[i][j]!='W':#W가 아니면, 즉 B이면
w_index+=1#W로 칠하는 갯수
else:#W일 때
b_index+=1#B로 칠하는 갯수
else:#홀수인 경우
if B[i][j]!='W':#W가 아니면, 즉 B이면
b_index+=1#B로 칠하는 갯수
else:
w_index+=1#W로 칠하는 갯수
res.append(w_index)
res.append(b_index)
print(min(res))
#%%
1. 접근
# 10 13 ==>[0][0]~[7][7] , [0][1]~[7][8] ~~~ [7] [12] ==> 6번
# ==>[1][0]~[8][7] , [1][1]~[8][8]~~~[8][12] ==> 6
# ==>....[2][0]~[9][7] , ~~~ ==> 6개
# ==> 18개
==> 8x8로 자르기 이므로 가로 시작 열 , 세로 시작 열 고려해서 for문 처리한다.
for a in range(A[0]-7): # 가로(행)
for b in range(A[1]-7): # 세로(열)
2. 시작이 'B' 냐 'W'로 구분하기
if (i+j)%2==0:#짝수인 경우 ==> 첫번째 부터 실행
if B[i][j]!='W':#W가 아니면, 즉 B이면
w_index+=1#W로 칠하는 갯수
else:#W일 때
b_index+=1#B로 칠하는 갯수
else:#홀수인 경우
if B[i][j]!='W':#W가 아니면, 즉 B이면
b_index+=1#B로 칠하는 갯수
else:
w_index+=1#W로 칠하는 갯수
==> 앞에꺼가 W로 바꾸기
==> 뒤에꺼가 B로 바꾸기
728x90
반응형
'Python(백준) > 브루트 포스' 카테고리의 다른 글
[백준 파이썬 2231번]분해합★브루트포스★문자열 이해★MAP 사용!!!!!!!★VER2.0 (0) | 2023.04.05 |
---|---|
★itertools.permutions로 풀기★브루트포스★continue & break 이해★[백준 파이썬 2798번]블랙잭 (0) | 2023.04.05 |
★브루트포스는 단순 무식(WHILE문 적극 활용)★[백준 파이썬 1436번]영화감독 숌 (0) | 2023.04.05 |
[백준 파이썬 1436번]영화감독 숌★브루트포스★단순하게 생각해보기★ (0) | 2022.09.29 |
[백준 파이썬 7598번]덩치★브루트포스★문자열 이해★ (1) | 2022.09.29 |