๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€์ด/-

[๋ฐฑ์ค€]1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ

by syLim___ 2023. 5. 7.
728x90

https://www.acmicpc.net/problem/1018

 

1018๋ฒˆ: ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ

์ฒซ์งธ ์ค„์— N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. N๊ณผ M์€ 8๋ณด๋‹ค ํฌ๊ฑฐ๋‚˜ ๊ฐ™๊ณ , 50๋ณด๋‹ค ์ž‘๊ฑฐ๋‚˜ ๊ฐ™์€ ์ž์—ฐ์ˆ˜์ด๋‹ค. ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ N๊ฐœ์˜ ์ค„์—๋Š” ๋ณด๋“œ์˜ ๊ฐ ํ–‰์˜ ์ƒํƒœ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. B๋Š” ๊ฒ€์€์ƒ‰์ด๋ฉฐ, W๋Š” ํฐ์ƒ‰์ด๋‹ค.

www.acmicpc.net


์•„์ด๋””์–ด

 - ์ฒด์ŠคํŒ์„ ์ˆœํšŒํ•˜๋ฉด์„œ, ํ˜„์žฌ ์นธ a,b๋กœ๋ถ€ํ„ฐ 8*8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์„ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋ฉด
    ํ•จ์ˆ˜ repaint(a,b) ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.
 - repaint(a,b)๋Š” ์ขŒํ‘œ(a,b)๊ฐ€ ์‹œ์ž‘์นธ(๋งจ์œ„,๋งจ์™ผ์ชฝ)์ธ 8*8 ์ฒด์ŠคํŒ์„ ๋งŒ๋“ค๊ณ ์ž ํ•  ๋•Œ ์ƒˆ๋กœ ์น ํ•ด์•ผํ•˜๋Š” ์ตœ์†Œ ์นธ์˜ ๊ฐœ์ˆ˜๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
 
 - ์ฒด์ŠคํŒ์œ„ ํฌ๊ธฐ๊ฐ€8*8๋กœ ์ •ํ•ด์ ธ์žˆ๊ธฐ ๋•Œ๋ฌธ์—, ๋‘ ํ–‰์”ฉ ๋–ผ์–ด์„œ ๋ณธ๋‹ค๋ฉด
    WBWBWBWB / BWBWBWBW ๋ฐ˜๋ณต๋˜๋„๋ก (๋˜๋Š” BWBWBWBW / WBWBWB2WB ๋ฐ˜๋ณต) ์น ํ•ด์ ธ์•ผ ํ•  ๊ฒƒ์ด๋‹ค.
 - repaint์—์„œ๋Š” ๋ฏธ๋ฆฌ ๋งŒ๋“ค์–ด๋‘” ์œ„ ๋ฌธ์ž์—ด๊ณผ ํ•จ์ˆ˜ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ฃผ์–ด์ง„ 8*8 ์˜์—ญ์„ ๋น„๊ตํ•˜์—ฌ ๋‹ค์‹œ ์น ํ•ด์•ผํ•  ์นธ ์ˆ˜๋ฅผ countํ•˜๊ณ , ์ด ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ๋ฆฌํ„ดํ•œ๋‹ค.


์ œ์ถœ ์ฝ”๋“œ (python)

import sys
input = sys.stdin.readline


def repaint(a,b):
  # ์น ํ•  ์ˆ˜ ์žˆ๋Š” ๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ์˜ ์ˆ˜
  case1 = "WBWBWBWB"
  case2 = "BWBWBWBW"
  result1 = 0
  result2 = 0
  for i in range(a,a+8):
    for j in range(b,b+8):
      idx = j-b
      if i%2 != 0:
        if case1[idx] != board[i][j]:
          result1 += 1
        if case2[idx] != board[i][j]:
          result2 += 1
      else:
        if case2[idx] != board[i][j]:
          result1 += 1
        if case1[idx] != board[i][j]:
          result2 += 1
  return min(result1,result2)

# data ์ž…๋ ฅ๋ฐ›๊ธฐ
n, m = map(int,input().split())
board = []
for _ in range(n):
  temp = list(input())
  board.append(temp)

# ๋ธŒ๋ฃจํŠธํฌ์Šค
answer = int(1e9)
a,b = 0,0
for i in range(n):
  for j in range(m):
    if a+8 <= n and b+8 <= m:
      answer = min(answer,repaint(a,b))
    b += 1
  a += 1
  b = 0

print(answer)

 

728x90