[Boj_2630] ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ

๐Ÿ“Ž ๋ฌธ์ œ ๋งํฌ

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

 

2630๋ฒˆ: ์ƒ‰์ข…์ด ๋งŒ๋“ค๊ธฐ

์ฒซ์งธ ์ค„์—๋Š” ์ „์ฒด ์ข…์ด์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด N์ด ์ฃผ์–ด์ ธ ์žˆ๋‹ค. N์€ 2, 4, 8, 16, 32, 64, 128 ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ƒ‰์ข…์ด์˜ ๊ฐ ๊ฐ€๋กœ์ค„์˜ ์ •์‚ฌ๊ฐํ˜•์นธ๋“ค์˜ ์ƒ‰์ด ์œ—์ค„๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ค„๊นŒ์ง€ ์ฃผ์–ด์ง„๋‹ค.

www.acmicpc.net

 

โ–ธ ๋ฌธ์ œ

์•„๋ž˜ <๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์—ฌ๋Ÿฌ๊ฐœ์˜ ์ •์‚ฌ๊ฐํ˜•์นธ๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ข…์ด๊ฐ€ ์ฃผ์–ด์ ธ ์žˆ๊ณ , ๊ฐ ์ •์‚ฌ๊ฐํ˜•๋“ค์€ ํ•˜์–€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ฑฐ๋‚˜ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๋‹ค. ์ฃผ์–ด์ง„ ์ข…์ด๋ฅผ ์ผ์ •ํ•œ ๊ทœ์น™์— ๋”ฐ๋ผ ์ž˜๋ผ์„œ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ๋ฅผ ๊ฐ€์ง„ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ํ•˜์–€์ƒ‰ ๋˜๋Š” ํŒŒ๋ž€์ƒ‰ ์ƒ‰์ข…์ด๋ฅผ ๋งŒ๋“ค๋ ค๊ณ  ํ•œ๋‹ค.

์ „์ฒด ์ข…์ด์˜ ํฌ๊ธฐ๊ฐ€ N×N(N=2k, k๋Š” 1 ์ด์ƒ 7 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜) ์ด๋ผ๋ฉด ์ข…์ด๋ฅผ ์ž๋ฅด๋Š” ๊ทœ์น™์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

์ „์ฒด ์ข…์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ฐ€๋กœ์™€ ์„ธ๋กœ๋กœ ์ค‘๊ฐ„ ๋ถ€๋ถ„์„ ์ž˜๋ผ์„œ <๊ทธ๋ฆผ 2>์˜ I, II, III, IV์™€ ๊ฐ™์ด ๋˜‘๊ฐ™์€ ํฌ๊ธฐ์˜ ๋„ค ๊ฐœ์˜ N/2 × N/2์ƒ‰์ข…์ด๋กœ ๋‚˜๋ˆˆ๋‹ค. ๋‚˜๋ˆ„์–ด์ง„ ์ข…์ด I, II, III, IV ๊ฐ๊ฐ์— ๋Œ€ํ•ด์„œ๋„ ์•ž์—์„œ์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ชจ๋‘ ๊ฐ™์€ ์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉด ๊ฐ™์€ ๋ฐฉ๋ฒ•์œผ๋กœ ๋˜‘๊ฐ™์€ ํฌ๊ธฐ์˜ ๋„ค ๊ฐœ์˜ ์ƒ‰์ข…์ด๋กœ ๋‚˜๋ˆˆ๋‹ค. ์ด์™€ ๊ฐ™์€ ๊ณผ์ •์„ ์ž˜๋ผ์ง„ ์ข…์ด๊ฐ€ ๋ชจ๋‘ ํ•˜์–€์ƒ‰ ๋˜๋Š” ๋ชจ๋‘ ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ ธ ์žˆ๊ฑฐ๋‚˜, ํ•˜๋‚˜์˜ ์ •์‚ฌ๊ฐํ˜• ์นธ์ด ๋˜์–ด ๋” ์ด์ƒ ์ž๋ฅผ ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋ฐ˜๋ณตํ•œ๋‹ค.

์œ„์™€ ๊ฐ™์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ž˜๋ž์„ ๋•Œ <๊ทธ๋ฆผ 3>์€ <๊ทธ๋ฆผ 1>์˜ ์ข…์ด๋ฅผ ์ฒ˜์Œ ๋‚˜๋ˆˆ ํ›„์˜ ์ƒํƒœ๋ฅผ, <๊ทธ๋ฆผ 4>๋Š” ๋‘ ๋ฒˆ์งธ ๋‚˜๋ˆˆ ํ›„์˜ ์ƒํƒœ๋ฅผ, <๊ทธ๋ฆผ 5>๋Š” ์ตœ์ข…์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ๋‹ค์–‘ํ•œ ํฌ๊ธฐ์˜ 9์žฅ์˜ ํ•˜์–€์ƒ‰ ์ƒ‰์ข…์ด์™€ 7์žฅ์˜ ํŒŒ๋ž€์ƒ‰ ์ƒ‰์ข…์ด๋ฅผ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค.

์ž…๋ ฅ์œผ๋กœ ์ฃผ์–ด์ง„ ์ข…์ด์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด N๊ณผ ๊ฐ ์ •์‚ฌ๊ฐํ˜•์นธ์˜ ์ƒ‰(ํ•˜์–€์ƒ‰ ๋˜๋Š” ํŒŒ๋ž€์ƒ‰)์ด ์ฃผ์–ด์งˆ ๋•Œ ์ž˜๋ผ์ง„ ํ•˜์–€์ƒ‰ ์ƒ‰์ข…์ด์™€ ํŒŒ๋ž€์ƒ‰ ์ƒ‰์ข…์ด์˜ ๊ฐœ์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

 

โ–ธ ์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์ „์ฒด ์ข…์ด์˜ ํ•œ ๋ณ€์˜ ๊ธธ์ด N์ด ์ฃผ์–ด์ ธ ์žˆ๋‹ค. N์€ 2, 4, 8, 16, 32, 64, 128 ์ค‘ ํ•˜๋‚˜์ด๋‹ค. ์ƒ‰์ข…์ด์˜ ๊ฐ ๊ฐ€๋กœ์ค„์˜ ์ •์‚ฌ๊ฐํ˜•์นธ๋“ค์˜ ์ƒ‰์ด ์œ—์ค„๋ถ€ํ„ฐ ์ฐจ๋ก€๋กœ ๋‘˜์งธ ์ค„๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ์ค„๊นŒ์ง€ ์ฃผ์–ด์ง„๋‹ค. ํ•˜์–€์ƒ‰์œผ๋กœ ์น ํ•ด์ง„ ์นธ์€ 0, ํŒŒ๋ž€์ƒ‰์œผ๋กœ ์น ํ•ด์ง„ ์นธ์€ 1๋กœ ์ฃผ์–ด์ง€๋ฉฐ, ๊ฐ ์ˆซ์ž ์‚ฌ์ด์—๋Š” ๋นˆ์นธ์ด ํ•˜๋‚˜์”ฉ ์žˆ๋‹ค.

 

โ–ธ ์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์ž˜๋ผ์ง„ ํ–์–€์ƒ‰ ์ƒ‰์ข…์ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ , ๋‘˜์งธ ์ค„์—๋Š” ํŒŒ๋ž€์ƒ‰ ์ƒ‰์ข…์ด์˜ ๊ฐœ์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๐Ÿ“ ๋ฌธ์ œ ์ •๋ณด

  • ๐Ÿฅˆ ๋ฌธ์ œ ๋ ˆ๋ฒจ : ์‹ค๋ฒ„ 2
  • ๐Ÿ””  ๋ฌธ์ œ ์œ ํ˜• : ๋ถ„ํ•  ์ •๋ณต, ์žฌ๊ท€
  • ๐Ÿ’ฌ  ํ’€์ด ์–ธ์–ด : JAVA

 

๐Ÿค” ๋ฌธ์ œ ํ’€์ด

  • ์‹œ์ž‘์ ์„ ๊ธฐ์ค€์œผ๋กœ ํ˜„์žฌ ์ข…์ด์— ๋Œ€ํ•ด ๋ชจ๋‘ ๊ฐ™์€ ์ƒ‰์ƒ์ธ์ง€๋ฅผ ์ฒดํฌํ–ˆ๋‹ค
  • ์ƒ‰์ƒ์ด ๊ฐ™๋‹ค๋ฉด ํ•ด๋‹น ์ƒ‰์ƒ์˜ ์ข…์ด์˜ ๊ฐœ์ˆ˜๋ฅผ 1 ์ฆ๊ฐ€์‹œ์ผœ ์ฃผ์—ˆ๋‹ค.
  • ์ƒ‰์ƒ์ด ๊ฐ™์ง€ ์•Š๋‹ค๋ฉด,  ํ˜„์žฌ ์ข…์ด์˜ ์ƒ‰์ƒ์ด ๊ฐ™์•„์งˆ ๋•Œ๊นŒ์ง€ 4๋“ฑ๋ถ„(์™ผ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ ์œ„, ์™ผ์ชฝ ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜)์œผ๋กœ ๋ถ„ํ• ํ•˜์—ฌ ๊ฐ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ์ชผ๊ฐœ์–ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

๐Ÿ” ๋ถ„ํ• ์ •๋ณต(Divide and Conquer)์ด๋ž€ ?

  • ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ถ€๋ถ„์œผ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๊ณ , ๊ทธ ํ•ด๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ „์ฒด ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ์–ป๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด๋‹ค.
  • ๋ถ„ํ•  ์ •๋ณต ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ผ๋ฐ˜์ ์œผ๋กœ ์žฌ๊ท€์ ์ธ ๋ฐฉ๋ฒ•์„ ํ†ตํ•ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๋ฉฐ,
  • ๊ฒ€์ƒ‰ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ์ด์ง„ ํƒ์ƒ‰(Binary Search), ์ •๋ ฌ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ธ ๋ณ‘ํ•ฉ ์ •๋ ฌ(Merge Sort), ํ€ต ์ •๋ ฌ(Quick Sort) ๋“ฑ๊ณผ ๊ฐ™์€ ๋ฌธ์ œ์— ์ ํ•ฉํ•˜๊ฒŒ ์‚ฌ์šฉ๋œ๋‹ค.

 

๐Ÿ” ๋ถ„ํ•  ์ •๋ณต๊ณผ ๋™์  ๊ณ„ํš๋ฒ• ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์ฐจ์ด

  • ๋ถ„ํ•  ์ •๋ณต๊ณผ ๋™์  ๊ณ„ํš๋ฒ•์€ ๋‘˜ ๋‹ค ํฐ ๋ฌธ์ œ๋ฅผ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜ ๊ธฐ๋ฒ•์ด์ง€๋งŒ, ๊ฐ ๋ถ€๋ถ„ ๋ฌธ์ œ์— ๋Œ€ํ•œ ํ•ด๋ฅผ ์–ด๋–ป๊ฒŒ ์ €์žฅํ•˜๊ณ  ์žฌ์‚ฌ์šฉํ•˜๋Š”์ง€์— ์ฐจ์ด๊ฐ€ ์žˆ๋‹ค.
  • ๋™์  ๊ณ„ํš๋ฒ•์—์„œ๋Š” ๋ถ€๋ถ„ ๋ฌธ์ œ๊ฐ€ ์ค‘๋ณต๋˜์–ด ๋ฐœ์ƒํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅํ•ด ๋‘๊ณ , ๋‚˜์ค‘์— ํ•„์š”ํ•  ๋•Œ ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ํ”ผํ•œ๋‹ค.
  • ๋ถ„ํ•  ์ •๋ณต์—์„œ๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์— ๋Œ€ํ•ด ์ค‘๋ณต์ด ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ธฐ ๋•Œ๋ฌธ์— ๊ฐ ๋ถ€๋ถ„ ๋ฌธ์ œ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ํ•ด๊ฒฐ๋œ๋‹ค.

 

๐Ÿ” ๋ถ„ํ•  ์ •๋ณต ๋‹จ๊ณ„

์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋ถ„ํ•  โžก ์ •๋ณต โžก ๊ฒฐํ•ฉ์˜ ์„ธ ๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•œ๋‹ค.

  • ๋ถ„ํ• (Divide)
    • ์ฃผ์–ด์ง„ ๋ฌธ์ œ๋ฅผ ๋” ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋กœ ๋‚˜๋ˆˆ๋‹ค.
  • ์ •๋ณต(Conquer)
    • ๊ฐ๊ฐ์˜ ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์„ ์žฌ๊ท€์ ์œผ๋กœ ํ•ด๊ฒฐํ•œ๋‹ค.
  • ๊ฒฐํ•ฉ(Combine)
    • ์ž‘์€ ๋ถ€๋ถ„ ๋ฌธ์ œ๋“ค์˜ ํ•ด๋ฅผ ๊ฒฐํ•ฉํ•˜์—ฌ ์ฃผ์–ด์ง„ ๋ฌธ์ œ์˜ ํ•ด๋ฅผ ๊ตฌํ•œ๋‹ค.

 

๐Ÿ”น ๋ถ„ํ•  ์ •๋ณต์˜ ์žฌ๊ท€์  ๋ฐฉ๋ฒ•์— ๋Œ€ํ•œ ๋น„๊ต

 

 

๐Ÿ”ธ ๋ถ„ํ•  ์ •๋ณต ์žฅ์ 

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

 

๐Ÿ”ธ ๋ถ„ํ•  ์ •๋ณต ๋‹จ์ 

  • ์˜ค๋ฒ„ํ—ค๋“œ & ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ
    • ํ•จ์ˆ˜๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ํ˜ธ์ถœํ•œ๋‹ค๋Š” ์ ์—์„œ ํ•จ์ˆ˜ ํ˜ธ์ถœ๋กœ ์ธํ•œ ์˜ค๋ฒ„ํ—ค๋“œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.
    • ์žฌ๊ท€ ํ˜ธ์ถœ์˜ ๊นŠ์ด๊ฐ€ ๋„ˆ๋ฌด ๊นŠ์–ด์งˆ ๊ฒฝ์šฐ, ์Šคํƒ์— ๋งŽ์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋ฏ€๋กœ ์Šคํƒ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฑฐ๋‚˜ ๊ณผ๋„ํ•œ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•˜๊ฒŒ ๋œ๋‹ค.
  • ์ ์šฉ ๊ฐ€๋Šฅ์„ฑ ์ œ์•ฝ
    • ๋ชจ๋“  ๋ฌธ์ œ๊ฐ€ ๋ถ„ํ•  ์ •๋ณต์— ์ ํ•ฉํ•œ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.
    • ํŠนํžˆ, ๋ฌธ์ œ๋ฅผ ์ ์ ˆํžˆ ๋‚˜๋ˆ„์–ด ํ•ด๊ฒฐํ•˜๋Š” ๊ฒƒ์ด ์–ด๋ ค์šด ๊ฒฝ์šฐ๋‚˜ ๋ถ€๋ถ„ ๋ฌธ์ œ ๊ฐ„์˜ ์˜์กด์„ฑ์ด ํฐ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ๋” ํšจ๊ณผ์ ์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ
    • ์žฌ๊ท€ ํ˜ธ์ถœ์ด๋‚˜ ์ค‘๋ณต ๊ณ„์‚ฐ์„ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ์ด ํ•„์š”ํ•œ ๊ฒฝ์šฐ ์ถ”๊ฐ€์ ์ธ ๋ฉ”๋ชจ๋ฆฌ๊ฐ€ ์†Œ์š”๋  ์ˆ˜ ์žˆ๋‹ค.

 

โœ” ์ตœ์ข… ์ฝ”๋“œ

๋ฉ”๋ชจ๋ฆฌ : 13176KB
์‹œ๊ฐ„ : 112ms
import java.io.*;
import java.util.StringTokenizer;

public class Main {
    static int[][] map;
    static int white = 0;
    static int blue = 0;
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int n = Integer.parseInt(br.readLine()); // ์ข…์ด ํ•œ ๋ณ€์˜ ๊ธธ์ด
        map = new int[n][n]; // ์ „์ฒด ์ข…์ด, ํ•˜์–€์ƒ‰ 0 ํŒŒ๋ž‘์ƒ‰ 1
        StringTokenizer st;
        for (int i = 0; i < n; i++) {
            st = new StringTokenizer(br.readLine());
            for (int j = 0; j < n; j++) {
                map[i][j] = Integer.parseInt(st.nextToken());
            }
        }
        partition(0, 0, n); // ์‹œ์ž‘์ , ํ•œ ๋ณ€์˜ ๊ธธ์ด
        bw.append(white + "\n" + blue);
        bw.flush();
        bw.close();
        br.close();
    }

    private static void partition(int x, int y, int size) {
        if (checkColor(x, y, size)) { // true -> ๊ฐ™์€ ์ƒ‰์ด ์น ํ•ด์ง„ ๊ณณ
            if (map[x][y] == 1) blue++;
            else white++;
            return;
        }

        int newSize = size/2; // ๋ถ„ํ• ๋œ ์ƒˆ๋กœ์šด ํฌ๊ธฐ
        partition(x, y, newSize); // ์ขŒ์ธก ์ƒ๋‹จ
        partition(x+newSize, y, newSize); // ์šฐ์ธก ์ƒ๋‹จ
        partition(x, y+newSize, newSize); // ์ขŒ์ธก ํ•˜๋‹จ
        partition(x+newSize, y+newSize, newSize); // ์šฐ์ธก ํ•˜๋‹จ
    }

    private static boolean checkColor(int x, int y, int size) {
        int color = map[x][y]; // ์ฒซ๋ฒˆ์งธ ์ƒ‰ ๊ธฐ์ค€
        for (int i = x; i < x + size; i++) {
            for (int j = y; j < y + size; j++) {
                // ์ƒ‰์ด ๊ฐ™์ง€ ์•Š์„๋•Œ ๋ถ„ํ• 
                if (color != map[i][j]) return false;
            }
        }
        return true;
    }
}


 

 

๐Ÿ“ ํ•จ๊ป˜ ํ’€์–ด๋ณด๋ฉด ์ข‹์€ ๋ฐฑ์ค€ ๋ฌธ์ œ

'Algorithm > BOJ' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[Boj_1074] Z  (1) 2023.11.28
[Boj_1992] ์ฟผ๋“œํŠธ๋ฆฌ  (1) 2023.11.28
[Boj_20002] ์‚ฌ๊ณผ๋‚˜๋ฌด  (0) 2023.11.21
[Boj_1446] ์ง€๋ฆ„๊ธธ  (0) 2023.11.21
[Boj_1504] ํŠน์ •ํ•œ ์ตœ๋‹จ ๊ฒฝ๋กœ  (0) 2023.11.21