1018 | 체스판 다시 칠하기
https://www.acmicpc.net/problem/1018



작성 코드
M, N = map(int, input().split())
board_input = []
for _ in range(M):
board_input.append(input())
count = []
first = 'B'
for a in range(M-8):
for b in range(N-8):
board = board_input[a:a+9][b:b+9]
for i in range(8):
for j in range(8):
if (i+j) % 2 == 0:
if board[i][j] != first:
w_count += 1
else:
if board[i][j] == first:
w_count += 1
count.append(w_count)
이상 코드
N, M = map(int, input().split())
nums = []
board_input = []
for _ in range(N):
board_input.append(input())
for i in range(N-7):
for j in range(M-7):
first_W = 0
for x in range(i, i+8):
for y in range(j, j+8):
if (x+y) % 2 == 0:
if board_input[x][y] != 'W' : first_W += 1
else:
if board_input[x][y] != 'B' : first_W += 1
nums.append(first_W)
nums.append(64 - first_W)
print(min(nums))
- i+j 가 짝수면 시작 색과 같음
학습
- 완전 탐색
- 좀 더 고민했다면 풀 수 있었을 것 같은 문제
- 지금 보니 나름 비슷하게 접근함 근데 범위 지정과 조건에 오류가 있음
- 'W'로 시작할 때 맞는 경우는 'B'로 시작했을 때 틀린 경우와 같기 때문에 굳이 두 값을 구해주지 않아도 한 값을 구한 후 64(체스판의 크기)에서 빼주면 됨
반응형
'Algorithm > BOJ' 카테고리의 다른 글
| [BOJ] 2417 | 정수 제곱근 (0) | 2022.05.11 |
|---|---|
| [BOJ] 1051 | 숫자 정사각형 (0) | 2022.02.16 |
| [BOJ] 2839 | 설탕배달 (0) | 2022.02.11 |
| [BOJ] 11659 | 구간 합 구하기 4 (0) | 2022.02.09 |
| [BOJ] 18111 | 마인크래프트 (0) | 2022.02.08 |
댓글