ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๋ถํ ์ ๋ณต
thinking
N์ด 1์ด ๋ ๋๊น์ง ์ชผ๊ฐ๋ฉด์ ์ฒดํนํ์
๊ทธ๋ผ ์ด์ผ ์ชผ๊ฐค ๊ฒ์ด๋? → ์์์ ์ ์ขํ๋ฅผ ๊ตฌํด์ ์ข ์ดํฌ๊ธฐ๋งํผ range๋ฅผ ์ค์ ํ ํ, ๋ฒ์ ์ฒดํนํ์.
๋ฐ๋ณต๋ฌธ ๋๋ฆฌ๋ฉด์ ์ฒดํนํ๋ค ์๊น์ด ์ ๋ถ ๊ฐ์ผ๋ฉด ๊ฑฐ๊ธฐ๋ stopํ๊ณ white or blue ๊ฐ์์ ์นด์ดํ ํด์ ๊ฒฝ์ฐ์ ์๋ฅผ ์ค์ด์
์ฝ๋
def divide(s_x,s_y,N):
global cnt_w, cnt_b
if N == 1 and a[s_x][s_y] == 0:
cnt_w += 1
return
if N == 1 and a[s_x][s_y] == 1:
cnt_b += 1
return
flag_w = 0
flag_b = 0
for i in range(s_x, s_x+N):
for j in range(s_y, s_y+N):
if flag_w == 0 and a[i][j] == 0:
flag_w = 1
elif flag_b == 0 and a[i][j] == 1:
flag_b = 1
N //= 2
if flag_w == 1 and flag_b == 0: # ์ ๋ถ ํ์์์ธ ๊ฒฝ์ฐ -> ํ์์ ์นด์ดํธํ๊ณ ๋
cnt_w += 1
if flag_w == 0 and flag_b == 1: # ์ ๋ถ ํ๋์์ธ ๊ฒฝ์ฐ -> ํ๋์ ์นด์ดํธํ๊ณ ๋
cnt_b += 1
if flag_w == 1 and flag_b == 1: # ๋๋ค ๋์ค๋ฉด ์ชผ๊ฐ๊ธฐ
divide(s_x, s_y, N)
divide(s_x + N, s_y, N)
divide(s_x, s_y + N, N)
divide(s_x + N, s_y + N, N)
N = int(input())
a = [list(map(int, input().split())) for _ in range(N)]
cnt_w, cnt_b = 0, 0
divide(0, 0, N)
print(cnt_w, cnt_b)
ํ์คํ๊ธฐ
ํ ๋งํ๋ ๋ฌธ์
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1003. ํผ๋ณด๋์น ํจ์ / python ํ์ด์ฌ (0) | 2021.04.08 |
---|---|
[๋ฐฑ์ค] 1074. Z / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 2164. ์นด๋2 / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 15649. N๊ณผ M (1) / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1018. ์ฒด์คํ ๋ค์ ์น ํ๊ธฐ / python ํ์ด์ฌ (0) | 2021.04.08 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- ์์ด๋๋ง์๊ธฐ
- dfs
- ํ๋ก๊ทธ๋๋จธ์ค
- 21609 ์์ด ์คํ๊ต
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- 2018 ์นด์นด์ค ๊ณต์ฑ
- Python
- swea
- ์ผ์ฑ์ฝํ
- git ๋ฏธ๋ฌ๋ง
- react
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- BFS
- dp
- merge ์๋ฌ
- ๋ธ๋ฃจํธํฌ์ค
- ๋ฐฑ์ค
- ์ผ์ฑ๊ธฐ์ถ
- merge์๋ฌ
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- ํ์ด์ฌ
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- ๊ธฐ์ง๊ตญ์ค์น
- ์๊ณ ๋ฆฌ์ฆ
- ๋ณด์์ผํ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ