๐•ƒ๐•ฆ๐•„๐•š๐•ฃ

ใ€ŒโŒจ๏ธแด„sใ€PS/๋ฐฑ์ค€_๋ธŒ๋ฃจํŠธํฌ์Šค

[Baekjoon/๋ฐฑ์ค€][1018][C/C++] ์ฒด์ŠคํŒ ๋‹ค์‹œ ์น ํ•˜๊ธฐ

by ๋ฃจ๋ฐ€๐•ƒ๐•ฆ๐•„๐•š๐•ฃ2023. 2. 7.
728x90
๋ฐ˜์‘ํ˜•
ใ€Ž๋ชฉ์ฐจใ€
0. ๊ฐœ์š”

1. ๋ฌธ์ œ
2. ํ’€์ด
3. ์ฝ”๋“œ

0. ๊ฐœ์š”

๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜. ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๋”ฐ์ ธ๊ฐ€๋ฉฐ ํ’€์–ด์•ผ ํ•˜๋ฏ€๋กœ, ๋ฌธ์ œ๋ฅผ ๋””ํ…Œ์ผํ•˜๊ฒŒ ์ ๊ฒ€ํ•˜์—ฌ ๋ฌธ์ œ์˜ ์š”๊ตฌ์กฐ๊ฑด์„ ๋†“์น˜์ง€ ์•Š๋„๋ก ํ•ด์•ผ ํ•œ๋‹ค.

1. ๋ฌธ์ œ

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

 

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

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

www.acmicpc.net

[๋ฌธ์ œ]

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

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

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

[์ž…๋ ฅ]

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

[์ถœ๋ ฅ]

์ฒซ์งธ ์ค„์— ์ง€๋ฏผ์ด๊ฐ€ ๋‹ค์‹œ ์น ํ•ด์•ผ ํ•˜๋Š” ์ •์‚ฌ๊ฐํ˜• ๊ฐœ์ˆ˜์˜ ์ตœ์†Ÿ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

[์˜ˆ์ œ ์ž…๋ ฅ 1]

8 8
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBBBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW

[์˜ˆ์ œ ์ถœ๋ ฅ 1]

1

[์˜ˆ์ œ ์ž…๋ ฅ 2]

10 13
BBBBBBBBWBWBW
BBBBBBBBBWBWB
BBBBBBBBWBWBW
BBBBBBBBBWBWB
BBBBBBBBWBWBW
BBBBBBBBBWBWB
BBBBBBBBWBWBW
BBBBBBBBBWBWB
WWWWWWWWWWBWB
WWWWWWWWWWBWB

[์˜ˆ์ œ ์ถœ๋ ฅ 2]

12

[์˜ˆ์ œ ์ž…๋ ฅ 3]

8 8
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBWBWBW
WBWBWBWB

[์˜ˆ์ œ ์ถœ๋ ฅ 3]

0

[์˜ˆ์ œ ์ž…๋ ฅ 4]

9 23
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBB
BBBBBBBBBBBBBBBBBBBBBBW

[์˜ˆ์ œ ์ถœ๋ ฅ 4]

31

[์˜ˆ์ œ ์ž…๋ ฅ 5]

10 10
BBBBBBBBBB
BBWBWBWBWB
BWBWBWBWBB
BBWBWBWBWB
BWBWBWBWBB
BBWBWBWBWB
BWBWBWBWBB
BBWBWBWBWB
BWBWBWBWBB
BBBBBBBBBB

[์˜ˆ์ œ ์ถœ๋ ฅ 5]

0

[์˜ˆ์ œ ์ž…๋ ฅ 6]

8 8
WBWBWBWB
BWBWBWBW
WBWBWBWB
BWBBBWBW
WBWBWBWB
BWBWBWBW
WBWBWWWB
BWBWBWBW

[์˜ˆ์ œ ์ถœ๋ ฅ 6]

2

[์˜ˆ์ œ ์ž…๋ ฅ 7]

11 12
BWWBWWBWWBWW
BWWBWBBWWBWW
WBWWBWBBWWBW
BWWBWBBWWBWW
WBWWBWBBWWBW
BWWBWBBWWBWW
WBWWBWBBWWBW
BWWBWBWWWBWW
WBWWBWBBWWBW
BWWBWBBWWBWW
WBWWBWBBWWBW

[์˜ˆ์ œ ์ถœ๋ ฅ 7]

15

2. ํ’€์ด

ํ’€์ด๋ฅผ ์‹œ์ž‘ํ•˜๊ธฐ ์ „์—

fgets ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค. ๋‹ค๋งŒ, fgetsํ•จ์ˆ˜๋Š” ์ž์‹ ๋งŒ์˜ ๋…ํŠนํ•œ ํŠน์ง•์ด ์žˆ์–ด, ์ด ๋ถ€๋ถ„์„ ์งš๊ณ  ๋„˜์–ด๊ฐ€์•ผ ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•  ๋•Œ ํ—ค๋งค์ง€ ์•Š๋Š”๋‹ค. fgets ํ•จ์ˆ˜์˜ ํŠน์ง•์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. (๋งํฌ๋ฅผ ์ฐธ์กฐํ•˜๊ฑฐ๋‚˜, ์•„๋ž˜์ชฝ ๊ธ€์„ ์ฝ์ž.)

https://lumir.tistory.com/31

 

[C][header][stdio.h] fgets

fgets #include // C++ ์˜ ๊ฒฝ์šฐ char* fgets(char* str, int num, FILE* stream); ํŠน์ง• 1. ๊ฐœํ–‰(=newline)(='\n') ํ˜น์€ ํŒŒ์ผ๋(=EOF)์„ ๋งŒ๋‚  ๋•Œ ๊นŒ์ง€, ํ•ด๋‹น stream์˜ buffer์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ์–ด๋“ค์ธ๋‹ค. (๊ฐœํ–‰(=newline)(='\n') ํ˜น์€ ํŒŒ

lumir.tistory.com

fgets ํ•จ์ˆ˜์˜ ํŠน์ง•

1. ๊ฐœํ–‰(=newline)(='\n') ํ˜น์€ ํŒŒ์ผ๋(=EOF)์„ ๋งŒ๋‚  ๋•Œ๊นŒ์ง€, ํ•ด๋‹น stream์˜ buffer์—์„œ ๋ฌธ์ž์—ด์„ ์ฝ์–ด ๋“ค์ธ๋‹ค.

(๊ฐœํ–‰(=newline)(='\n') ํ˜น์€ ํŒŒ์ผ๋(=EOF)์„ ๋งŒ๋‚˜๋ฉด, ์ž…๋ ฅ์ด ์ข…๋ฃŒ๋œ๋‹ค.)

2. ๋ฌธ์ž์—ด์„ ์ฝ์–ด ๋“ค์ธ ํ›„, ๋ฌธ์ž์—ด ๋์— NULL(='\0')๊ฐ’์ด ์ž๋™์œผ๋กœ ์ถ”๊ฐ€๋œ๋‹ค.

3. fgets๋Š” gets์™€ ๋‹ฌ๋ฆฌ, ๊ฐœํ–‰(=newline)(='\n')์ด ํฌํ•จ๋œ ์ฑ„ ์ €์žฅ๋œ๋‹ค.

๋ฌธ์ œํ’€์ด

/* Input */

๋ฌธ์ œ์˜ ์ž…๋ ฅ๊ฐ’์ธ N๊ณผ M์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค. ์ด๋•Œ, N๊ณผ M์„ ์ž…๋ ฅ๋ฐ›์€ ํ›„ ํ•„์—ฐ์ ์œผ๋กœ '\n'(=๊ฐœํ–‰)(=Newline)์ด ์ž…๋ ฅ๋˜๋ฏ€๋กœ, ์ž…๋ ฅ๋ฒ„ํผ์—๋Š” '\n'์ด ์กด์žฌํ•˜๊ฒŒ ๋œ๋‹ค. ∴ getcharํ•จ์ˆ˜์˜ ํ˜ธ์ถœ์„ ํ†ตํ•ด '\n'์„ ์ž…๋ ฅ๋ฒ„ํผ์—์„œ ์ง€์›Œ์ฃผ์–ด์•ผ ํ•œ๋‹ค.

 

/* 2์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น */

C์–ธ์–ด์—์„œ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋™์ ํ• ๋‹นํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜ ์ฝ”๋“œ์™€ ๊ฐ™๋‹ค.

์ด๋•Œ, '\n'๊ณผ '\0'๋ฌธ์ž๊ฐ€ ๋“ค์–ด์˜ฌ ๊ฒƒ์„ ๋Œ€๋น„ํ•˜์—ฌ ๊ฐ€๋กœ์˜ ๊ธธ์ด๋ฅผ M+2๋กœ ์„ ์–ธํ•œ๋‹ค.

 

/* Input */

fgets ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด W์™€ B๋กœ ๊ตฌ์„ฑ๋œ ๋ฌธ์ž์—ด์„ ์ž…๋ ฅ๋ฐ›๋Š”๋‹ค.

 

/* ์ฒด์ŠคํŒ ์ฒดํฌ */

๋ฌธ์ œ์˜ ํ•ต์‹ฌ ํŒŒํŠธ. ์ฝ”๋“œ๊ฐ€ ๊ธด Version๊ณผ ๊ฐ„๋žตํ•œ Version 2๊ฐ€์ง€๋ฅผ ๊ธฐ์ˆ ํ•ด ๋‘์—ˆ๋‹ค. (์•„๋ž˜ ์ฝ”๋“œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.)

 

ํ•ต์‹ฌ์•„์ด๋””์–ด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค. ์ฒด์ŠคํŒ์˜ ๋ชจ์–‘(ํŒจํ„ด)์€ ๋‹ค์Œ์˜ 2๊ฐ€์ง€ ๊ฒฝ์šฐ๋งŒ ์กด์žฌํ•œ๋‹ค.

 

[โ‘  ์ƒ‰๊น”์ด W๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ(W_start)]

WBWBWBWB

BWBWBWBW

WBWBWBWB

BWBWBWBW

WBWBWBWB

BWBWBWBW

WBWBWBWB

BWBWBWBW

 

[โ‘ก ์ƒ‰๊น”์ด B๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒฝ์šฐ(B_start)]

BWBWBWBW

WBWBWBWB

BWBWBWBW

WBWBWBWB

BWBWBWBW

WBWBWBWB

BWBWBWBW

WBWBWBWB

 

∴ ์ž…๋ ฅ๋ฐ›์€ ์ฒด์ŠคํŒ์„ 8x8์˜ ํฌ๊ธฐ๋กœ ์ž๋ฅธ ํ›„, ์œ„ ํŒจํ„ด๊ณผ ๋‹ค๋ฅธ ๋ถ€๋ถ„์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ฐ๊ฐ ๊ณ„์‚ฐํ•œ ๋‹ค์Œ(W_start์ธ ๊ฒฝ์šฐ์™€ B_start์ธ ๊ฒฝ์šฐ), ๋‘˜ ์ค‘ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•˜๋ฉด ๋œ๋‹ค.

 

/* ์ถœ๋ ฅ */

์ž…๋ ฅ๋ฐ›์€ ์ฒด์ŠคํŒ์„ 8x8์˜ ํฌ๊ธฐ๋กœ ์ž๋ฅธ ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ์ˆ˜์— ๋Œ€ํ•ด ๊ฐ๊ฐ์˜ ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•œ ํ›„, ๊ฐ๊ฐ์˜ ์ตœ์†Ÿ๊ฐ’๋“ค์— ๋Œ€ํ•ด ์ตœ์†Ÿ๊ฐ’์„ ๊ตฌํ•ด ์ถœ๋ ฅํ•˜๋ฉด ๋œ๋‹ค. (์—ฌ๊ธฐ์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์ด min_num ์ด๋‹ค.)

3. ์ฝ”๋“œ

#pragma warning(disable:4996)

#include <stdio.h>
#include <stdlib.h>
#include <limits.h> // ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ์ •์˜.

#define min(a,b) (((a) > (b)) ? (b) : (a))

int main(int argc, char* argv[]) {
	/* Input */
	int N, M; scanf("%d %d", &N, &M); //N์€ ์„ธ๋กœ, M์€ ๊ฐ€๋กœ.
	getchar(); //'\n'์„ ์ž…๋ ฅ๋ฒ„ํผ์—์„œ ์ง€์›€.

	/* 2์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น */
	char** arr = (char**)calloc(N, sizeof(char*));
	for (int i = 0; i < N; i++)
		arr[i] = (char*)calloc(M+2, sizeof(char)); //'\n'๊ณผ '\0' ๊ณ ๋ ค.

	/* Input */
	for (int i = 0; i < N; i++)
		fgets(arr[i], (M + 2) * sizeof(char), stdin);
		//sizeof(arr[i])๋ฅผ ํ•˜๋ฉด, arr[i] = intํ˜• ์‹ฑ๊ธ€ ํฌ์ธํ„ฐ ํฌ๊ธฐ์ธ 8์ด ๋ฐ˜ํ™˜๋œ๋‹ค.
		
	/* ์ฒด์ŠคํŒ ์ฒดํฌ */
	int min_num = INT_MAX;

	for (int col = 0; col <= N - 8; col++) {
		for (int row = 0; row <= M - 8; row++) {
			int W_start = 0, B_start = 0;

			/* 8 x 8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ ์ฒดํฌ */
			for (int i = col; i < col + 8; i++) {
				for (int j = row; j < row + 8; j++) {

					/* ์„ธ๋กœ ์ธ๋ฑ์Šค ์ง์ˆ˜ */
					if (i % 2 == 0) {
						/* ๊ฐ€๋กœ ์ธ๋ฑ์Šค ์ง์ˆ˜ */
						if (j % 2 == 0) {
							if (arr[i][j] != 'W') W_start++;
							if (arr[i][j] != 'B') B_start++;
						}
						/* ๊ฐ€๋กœ ์ธ๋ฑ์Šค ํ™€์ˆ˜ */
						else if (j % 2 == 1) {
							if (arr[i][j] != 'B') W_start++;
							if (arr[i][j] != 'W') B_start++;
						}
					}

					/* ์„ธ๋กœ ์ธ๋ฑ์Šค ํ™€์ˆ˜ */
					else if (i % 2 == 1) {
						/* ๊ฐ€๋กœ ์ธ๋ฑ์Šค ์ง์ˆ˜ */
						if (j % 2 == 0) {
							if (arr[i][j] != 'B') W_start++;
							if (arr[i][j] != 'W') B_start++;
						}
						/* ๊ฐ€๋กœ ์ธ๋ฑ์Šค ํ™€์ˆ˜ */
						else if (j % 2 == 1) {
							if (arr[i][j] != 'W') W_start++;
							if (arr[i][j] != 'B') B_start++;
						}
					}
				}
			}

			min_num = min(min_num, min(W_start, B_start));
		}
	}

	/* ์ถœ๋ ฅ */
	printf("%d", min_num);

	/* ๋งˆ๋ฌด๋ฆฌ */
	for (int i = 0; i < N; i++)
		free(arr[i]);
	free(arr);

	return 0;
}
/* '8 x 8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ ์ฒดํฌ' ํŒŒํŠธ ๊ฐ„๋žตํ™” Ver. */
#pragma warning(disable:4996)

#include <stdio.h>
#include <stdlib.h>
#include <limits.h> // ์ตœ๋Œ“๊ฐ’, ์ตœ์†Ÿ๊ฐ’ ์ •์˜.

#define min(a,b) (((a) > (b)) ? (b) : (a))

int main(int argc, char* argv[]) {
	/* Input */
	int N, M; scanf("%d %d", &N, &M); //N์€ ์„ธ๋กœ, M์€ ๊ฐ€๋กœ.
	getchar(); //'\n'์„ ์ž…๋ ฅ๋ฒ„ํผ์—์„œ ์ง€์›€.

	/* 2์ฐจ์› ๋ฐฐ์—ด ๋™์ ํ• ๋‹น */
	char** arr = (char**)calloc(N, sizeof(char*));
	for (int i = 0; i < N; i++)
		arr[i] = (char*)calloc(M + 2, sizeof(char)); //'\n'๊ณผ '\0' ๊ณ ๋ ค.

	/* Input */
	for (int i = 0; i < N; i++)
		fgets(arr[i], (M + 2) * sizeof(char), stdin);
	//sizeof(arr[i])๋ฅผ ํ•˜๋ฉด, arr[i] = intํ˜• ์‹ฑ๊ธ€ ํฌ์ธํ„ฐ ํฌ๊ธฐ์ธ 8์ด ๋ฐ˜ํ™˜๋œ๋‹ค.

	/* ์ฒด์ŠคํŒ ์ฒดํฌ */
	int min_num = INT_MAX;

	for (int col = 0; col <= N - 8; col++) {
		for (int row = 0; row <= M - 8; row++) {
			int W_start = 0, B_start = 0;

			/* 8 x 8 ํฌ๊ธฐ์˜ ์ฒด์ŠคํŒ ์ฒดํฌ */
			for (int i = col; i < col + 8; i++) {
				for (int j = row; j < row + 8; j++) {
					/* ์„ธ๋กœ+๊ฐ€๋กœ ์ธ๋ฑ์Šค ์ง์ˆ˜ */
					if ((i + j) % 2 == 0) {
						if (arr[i][j] != 'W') W_start++;
						if (arr[i][j] != 'B') B_start++;

					}

					/* ์„ธ๋กœ+๊ฐ€๋กœ ์ธ๋ฑ์Šค ํ™€์ˆ˜ */
					else if ((i + j) % 2 == 1) {
						if (arr[i][j] != 'B') W_start++;
						if (arr[i][j] != 'W') B_start++;
					}
				}
			}

			min_num = min(min_num, min(W_start, B_start));
		}
	}

	/* ์ถœ๋ ฅ */
	printf("%d", min_num);

	/* ๋งˆ๋ฌด๋ฆฌ */
	for (int i = 0; i < N; i++)
		free(arr[i]);
	free(arr);

	return 0;
}
728x90
๋ฐ˜์‘ํ˜•