반응형
문제
https://www.acmicpc.net/problem/1018
1018번: 체스판 다시 칠하기
첫째 줄에 N과 M이 주어진다. N과 M은 8보다 크거나 같고, 50보다 작거나 같은 자연수이다. 둘째 줄부터 N개의 줄에는 보드의 각 행의 상태가 주어진다. B는 검은색이며, W는 흰색이다.
www.acmicpc.net
코드
import sys
input = sys.stdin.readline
n, m = map(int, input().split())
origin = []
cnt = []
for _ in range(n):
origin.append(input())
for a in range(n-7):
for b in range(m-7):
index1 = 0
index2 = 0
for i in range(a, a+8):
for j in range(b, b+8):
if (i+j) % 2 == 0:
if origin[i][j] != 'W':
index1 += 1
elif origin[i][j] != 'B':
index2 += 1
else:
if origin[i][j] != 'B':
index1 += 1
elif origin[i][j] != 'W':
index2 += 1
cnt.append(min(index1, index2))
print(min(cnt))
설명
우선 나무판의 원형을 입력 받아준다.
이후 나무판의 첫 부분부터 끝 부분에서 8칸 떨어진 부분까지를 시작점으로 잡고 모든 부분을 비교한다.
비교를 할 때 첫 시작이 하얀 부분일 경우와 검은 부분일 경우를 나누어 계산해주고,
색을 바꿔주어야 한다면 index의 카운트를 하나 올려준다.
결괏값의 최솟값을 cnt에 넣어주고,
모든 비교가 종료되면 cnt의 가장 최솟값을 출력해준다.
반응형
'개발 연습장 > 백준 문제풀이' 카테고리의 다른 글
[파이썬, Python] 백준 10815: 숫자 카드 (0) | 2023.01.31 |
---|---|
[파이썬, Python] 백준 1436: 영화감독 숌 (0) | 2023.01.30 |
[파이썬, Python] 백준 7568: 덩치 (3) | 2023.01.19 |
[파이썬, Python] 백준 2231: 분해합 (0) | 2023.01.18 |
[파이썬, Python] 백준 2798: 블랙잭 (0) | 2023.01.17 |