백준 알고리즘 1018 (체스판 다시 칠하기) - python
> https://www.acmicpc.net/problem/1018
W 또는 B로 시작하는 격자 무늬 체스판 다시 칠하기!
8 x 8의 판을 이용한다는 특징이 있다.
[문제 해결]
1. 최소값 _min은 8 x 8 64로 설정
2. 8 x 8의 기준이 될 좌상단 index를 기준으로 하는 i, j for문
3. (0,0)이 W라고 가정하고 틀린 경우를 cnt에 누적한다.
정반대의 경우는 64 - cnt가 알아서 세지는 방식이다.
4. cnt와 64-cnt를 비교하여 작은 수 cnt_min을 찾는다.
5. 최종적으로 _min과 cnt_min을 비교하여 작은 수를 출력.
import sys
N, M = map(int, sys.stdin.readline().split())
_map = [sys.stdin.readline().rstrip() for _ in range(N)]
_min = 64 # 최대 8 x 8
for i in range(N-7):
for j in range(M-7):
cnt = 0
# (0,0)이 W인 경우로 가정
for k in range(8):
for l in range(8):
# 틀린 경우만 체크
if (k + l) % 2 == 0:
if _map[i + k][j + l] == 'B': # W이어야 하는데 B인 경우
cnt += 1
else:
if _map[i + k][j + l] == 'W': # B이어야 하는데 W인 경우
cnt += 1
cnt_min = min(cnt, 64 - cnt) # 틀린 경우와, 그 반전의 경우
if _min > cnt_min:
_min = cnt_min
print(_min)
728x90
'백준 알고리즘(BOJ)' 카테고리의 다른 글
백준 알고리즘 11399 (ATM) - python (0) | 2022.06.30 |
---|---|
백준 알고리즘 1436 (영화감독 숌) - python (재풀이) (0) | 2022.06.29 |
백준 알고리즘 14888 (연산자 끼워넣기) - python (재풀이) (0) | 2022.06.22 |
백준 알고리즘 2580 (스도쿠) - python (재풀이) (0) | 2022.06.17 |
백준 알고리즘 1931 (회의실 배정) - python (0) | 2022.06.12 |
댓글