본문 바로가기
Algorithm/BOJ

[BOJ]1018 | 체스판 다시 칠하기

by 밤초록 2022. 2. 14.
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

댓글