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)
'์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > -' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค]1992๋ฒ: ์ฟผ๋ํธ๋ฆฌ (0) | 2023.05.15 |
---|---|
[๋ฐฑ์ค]2503๋ฒ: ์ซ์ ์ผ๊ตฌ (0) | 2023.05.09 |
์ต์๊ณต๋ฐฐ์ ๋ฌธ์ (0) | 2023.04.15 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ต๋๊ณต์ฝ์์ ์ต์๊ณต๋ฐฐ์ (0) | 2023.04.03 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ ์ ์ ๊ณฑ๊ทผ ํ๋ณ (0) | 2023.03.24 |