Problem Solving/BOJ & Programmers

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

geum 2023. 11. 5. 21:40

๋ฌธ์ œ

์ง€๋ฏผ์ด๋Š” ์ž์‹ ์˜ ์ €ํƒ์—์„œ MN๊ฐœ์˜ ๋‹จ์œ„ ์ •์‚ฌ๊ฐํ˜•์œผ๋กœ ๋‚˜๋ˆ„์–ด์ ธ ์žˆ๋Š” M×N ํฌ๊ธฐ์˜ ๋ณด๋“œ๋ฅผ ์ฐพ์•˜๋‹ค. ์–ด๋–ค ์ •์‚ฌ๊ฐํ˜•์€ ๊ฒ€์€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ณ , ๋‚˜๋จธ์ง€๋Š” ํฐ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋‹ค. ์ง€๋ฏผ์ด๋Š” ์ด ๋ณด๋“œ๋ฅผ ์ž˜๋ผ์„œ 8×8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์œผ๋กœ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

์ฒด์ŠคํŒ์€ ๊ฒ€์€์ƒ‰๊ณผ ํฐ์ƒ‰์ด ๋ฒˆ๊ฐˆ์•„์„œ ์น ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ตฌ์ฒด์ ์œผ๋กœ, ๊ฐ ์นธ์ด ๊ฒ€์€์ƒ‰๊ณผ ํฐ์ƒ‰ ์ค‘ ํ•˜๋‚˜๋กœ ์ƒ‰์น ๋˜์–ด ์žˆ๊ณ , ๋ณ€์„ ๊ณต์œ ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ์‚ฌ๊ฐํ˜•์€ ๋‹ค๋ฅธ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ์ด ์ •์˜๋ฅผ ๋”ฐ๋ฅด๋ฉด ์ฒด์ŠคํŒ์„ ์ƒ‰์น ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋‘ ๊ฐ€์ง€๋ฟ์ด๋‹ค. ํ•˜๋‚˜๋Š” ๋งจ ์™ผ์ชฝ ์œ„ ์นธ์ด ํฐ์ƒ‰์ธ ๊ฒฝ์šฐ, ํ•˜๋‚˜๋Š” ๊ฒ€์€์ƒ‰์ธ ๊ฒฝ์šฐ์ด๋‹ค.

๋ณด๋“œ๊ฐ€ ์ฒด์ŠคํŒ์ฒ˜๋Ÿผ ์น ํ•ด์ ธ ์žˆ๋‹ค๋Š” ๋ณด์žฅ์ด ์—†์–ด์„œ, ์ง€๋ฏผ์ด๋Š” 8×8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ์œผ๋กœ ์ž˜๋ผ๋‚ธ ํ›„์— ๋ช‡ ๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์„ ๋‹ค์‹œ ์น ํ•ด์•ผ๊ฒ ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋‹ค. ๋‹น์—ฐํžˆ 8*8 ํฌ๊ธฐ๋Š” ์•„๋ฌด๋ฐ์„œ๋‚˜ ๊ณจ๋ผ๋„ ๋œ๋‹ค. ์ง€๋ฏผ์ด๊ฐ€ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜•์˜ ์ตœ์†Œ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ์‹œ

์˜ˆ์‹œ๊ฐ€ ๋งŽ์•„์„œ ํ•˜๋‚˜๋งŒ ๊ฐ€์ ธ์™”๋‹ค ๐Ÿ™‚

 

ํ’€์ด

๋ฌธ์ œ ์ดํ•ดํ•˜๋Š” ์‹œ๊ฐ„์€ ๊ทธ๋ ‡๊ฒŒ ์˜ค๋ž˜ ๊ฑธ๋ฆฌ์ง€ ์•Š์•˜๋Š”๋ฐ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ๋Œ€๋กœ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ๋”๋‹ˆ ์ฃผ๋จน๊ตฌ๊ตฌ์‹์œผ๋กœ ํ‘ธ๋Š” ๋Š๋‚Œ์ด ๋“ค์–ด(์ดํ•ดํ•˜๊ณ  ์—๋Ÿฌ ๊ณ ์น˜๋Š” ๊ฒƒ X ์–ด? ์ธ๋ฑ์Šค ์ด๋ ‡๊ฒŒ ๋„ฃ์œผ๋‹ˆ๊นŒ ์—๋Ÿฌ๋‚˜๋„ค ์ˆœ์„œ ๋ฐ”๊ฟ”๋ด์•ผ์ง€ O ์ด๋Ÿฐ ๋Š๋‚Œ) ์—ฌ๋Ÿฌ ๊ณ ์ˆ˜๋ถ„๋“ค์˜ ์ž˜ ์ •์ œ๋œ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ–ˆ๋‹ค. ๊ตฌํ˜„ ๋ฌธ์ œ๋ฅผ ๋“ฑํ•œ์‹œํ•˜์ง€ ๋ง์ž๋Š” ๊ตํ›ˆ์„ ์–ป๊ฒŒ ๋˜์—ˆ๋‹ค.

 

# Silver 4

import sys

rows, cols = map(int, sys.stdin.readline().split())

board = [sys.stdin.readline().rstrip() for _ in range(rows)]

result = []

for row in range(rows-7):
    for col in range(cols-7):
        cnt1, cnt2 = 0, 0
        
        # ๋‚˜๋ˆ ์ง„ ์ •์‚ฌ๊ฐํ˜•๋ณ„๋กœ ํ™•์ธ
        for r in range(row, row+8):
            for c in range(col, col+8):
                if (r+c)%2 == 0:
                    if board[r][c] != 'W':
                        cnt1 += 1
                    if board[r][c] != 'B':
                        cnt2 += 1
                else:
                    if board[r][c] != 'B':
                        cnt1 += 1
                    if board[r][c] != 'W':
                        cnt2 += 1
                        
        result.append(cnt1)
        result.append(cnt2)

print(min(result))

 

ํ†ต๊ณผ๋œ ์ฝ”๋“œ๋“ค์„ ์ฐธ๊ณ ํ•˜๋ฉด์„œ ํ•œ ๊ฐ€์ง€ ๊ถ๊ธˆ์ฆ์ด ์žˆ์—ˆ๊ณ  ์Šค์Šค๋กœ ๊ถ๊ธˆ์ฆ์— ๋Œ€ํ•œ ๋‹ต์„ ์ƒ๊ฐํ•ด๋ณด์•˜๋‹ค.

 

๐Ÿง Q. ์‹œ์ž‘์  ํ™•์ธ

๋‚˜๋ˆ ์ง„ ์ •์‚ฌ๊ฐํ˜•๋ณ„๋กœ ๋งจ ์™ผ์ชฝ ์œ„ ์นธ์ด ๋ฌด์Šจ ์ƒ‰์ธ์ง€ ํ™•์ธ์„ ํ•ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ์ฒ˜์Œ์—๋Š” ๊ฑฐ๊ธฐ์— ๋งž์ถฐ์„œ ์ฝ”๋“œ๋ฅผ ์งฐ๋‹ค.

 

1) ๋งจ ์™ผ์ชฝ ์œ„ ์นธ์ด ๊ฒ€์€์ƒ‰์ผ ๋•Œ

2) ๋งจ ์™ผ์ชฝ ์œ„ ์นธ์ด ํฐ์ƒ‰์ผ ๋•Œ

 

๋‘ ๊ฐ€์ง€ ๊ฒฝ์šฐ๋กœ ๋‚˜๋ˆ  ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ ค๊ณ  ํ–ˆ๋Š”๋ฐ ์กฐ๊ฑด๋ฌธ๊ณผ ์ค‘๋ณต๋˜๋Š” ์ฝ”๋“œ๊ฐ€ ๋งŽ์•„์„œ ์ด๋ ‡๊ฒŒ ํ•˜๋Š” ๊ฒŒ ๋งž๋‚˜ ์‹ถ์€ ์ƒ๊ฐ์ด ๋“ค์—ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ๋‹ค๋ฅธ ๋ถ„๋“ค์˜ ์ฝ”๋“œ๋Š” ์‹œ์ž‘์ ์˜ ์ƒ‰์„ ๋”ฐ๋กœ ์ฒดํฌํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๋กœ cnt ๋ณ€์ˆ˜์— ๊ฐ’์„ ๋”ํ•ด์ฃผ๋Š” ์กฐ๊ฑด๋ฌธ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์ด์—ˆ์Œ!

 

๐Ÿค“ A. line 18, 23

Line 18๊ณผ 23์˜ ์กฐ๊ฑด๋ฌธ์ด ํ•ด๋‹ต์ด์—ˆ๋‹ค.

 

๋ฌธ์ œ์—์„œ ์ฒด์ŠคํŒ์€ W B W B ... / B W B W ... ํ˜•ํƒœ๋กœ ์น ํ•ด์ ธ์•ผ ํ•œ๋‹ค๊ณ  ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— rํ–‰์˜ ์ง์ˆ˜ ์ธ๋ฑ์Šค๋“ค์€ ๋ฌด์กฐ๊ฑด ์‹œ์ž‘์ ๊ณผ ์ƒ‰์ด ๊ฐ™์•„์•ผ ํ•œ๋‹ค. ์ฆ‰ cnt1 ๋ณ€์ˆ˜๋Š” ์‹œ์ž‘์ ์ด 'W'์ผ ๋•Œ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์นธ์˜ ๊ฐœ์ˆ˜์ด๊ณ  cnt2 ๋ณ€์ˆ˜๋Š” ์‹œ์ž‘์ ์ด 'B'์ผ ๋•Œ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์นธ์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

 

cn1, cnt2 ๋ณ€์ˆ˜์˜ ์—ญํ• ์— ๋Œ€ํ•ด ์ธ์ง€ํ•œ ์ƒํƒœ๋กœ line 23์„ ๋ณด๋ฉด rํ–‰์˜ ํ™€์ˆ˜ ์ธ๋ฑ์Šค๋“ค์€ ๋ฌด์กฐ๊ฑด ์‹œ์ž‘์ ๊ณผ ์ƒ‰์ด ๋‹ฌ๋ผ์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— line 18์˜ ์กฐ๊ฑด๋ฌธ๊ณผ 'B', 'W'์˜ ์œ„์น˜๊ฐ€ ๋ฐ”๋€Œ๊ฒŒ ๋œ๋‹ค.