๋ฌธ์ ์ค๋ช
0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง 2n x 2n ํฌ๊ธฐ์ 2์ฐจ์ ์ ์ ๋ฐฐ์ด arr์ด ์์ต๋๋ค. ๋น์ ์ ์ด arr์ ์ฟผ๋ ํธ๋ฆฌ์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์์ถํ๊ณ ์ ํฉ๋๋ค. ๊ตฌ์ฒด์ ์ธ ๋ฐฉ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋น์ ์ด ์์ถํ๊ณ ์ ํ๋ ํน์ ์์ญ์ S๋ผ๊ณ ์ ์ํฉ๋๋ค.
- ๋ง์ฝ S ๋ด๋ถ์ ์๋ ๋ชจ๋ ์๊ฐ ๊ฐ์ ๊ฐ์ด๋ผ๋ฉด, S๋ฅผ ํด๋น ์ ํ๋๋ก ์์ถ์ํต๋๋ค.
- ๊ทธ๋ ์ง ์๋ค๋ฉด, S๋ฅผ ์ ํํ 4๊ฐ์ ๊ท ์ผํ ์ ์ฌ๊ฐํ ์์ญ(์ ์ถ๋ ฅ ์๋ฅผ ์ฐธ๊ณ ํด์ฃผ์๊ธฐ ๋ฐ๋๋๋ค.)์ผ๋ก ์ชผ๊ฐ ๋ค, ๊ฐ ์ ์ฌ๊ฐํ ์์ญ์ ๋ํด ๊ฐ์ ๋ฐฉ์์ ์์ถ์ ์๋ํฉ๋๋ค.
arr์ด ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค. ์์ ๊ฐ์ ๋ฐฉ์์ผ๋ก arr์ ์์ถํ์ ๋, ๋ฐฐ์ด์ ์ต์ข ์ ์ผ๋ก ๋จ๋ 0์ ๊ฐ์์ 1์ ๊ฐ์๋ฅผ ๋ฐฐ์ด์ ๋ด์์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
- arr์ ํ์ ๊ฐ์๋ 1 ์ด์ 1024 ์ดํ์ด๋ฉฐ, 2์ ๊ฑฐ๋ญ ์ ๊ณฑ์ ํํ๋ฅผ ํ๊ณ ์์ต๋๋ค. ์ฆ, arr์ ํ์ ๊ฐ์๋ 1, 2, 4, 8, ..., 1024 ์ค ํ๋์
๋๋ค.
- arr์ ๊ฐ ํ์ ๊ธธ์ด๋ arr์ ํ์ ๊ฐ์์ ๊ฐ์ต๋๋ค. ์ฆ, arr์ ์ ์ฌ๊ฐํ ๋ฐฐ์ด์ ๋๋ค.
- arr์ ๊ฐ ํ์ ์๋ ๋ชจ๋ ๊ฐ์ 0 ๋๋ 1 ์ ๋๋ค.
์ ์ถ๋ ฅ ์
์ ์ถ๋ ฅ ์ #1
- ๋ค์ ๊ทธ๋ฆผ์ ์ฃผ์ด์ง arr์ ์์ถํ๋ ๊ณผ์ ์ ๋ํ๋ธ ๊ฒ์ ๋๋ค.
- ์ต์ข ์์ถ ๊ฒฐ๊ณผ์ 0์ด 4๊ฐ, 1์ด 9๊ฐ ์์ผ๋ฏ๋ก, [4,9]๋ฅผ return ํด์ผ ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
- ๋ค์ ๊ทธ๋ฆผ์ ์ฃผ์ด์ง arr์ ์์ถํ๋ ๊ณผ์ ์ ๋ํ๋ธ ๊ฒ์ ๋๋ค.
- ์ต์ข ์์ถ ๊ฒฐ๊ณผ์ 0์ด 10๊ฐ, 1์ด 15๊ฐ ์์ผ๋ฏ๋ก, [10,15]๋ฅผ return ํด์ผ ํฉ๋๋ค.
ํ์ด ์ฝ๋
def check(start, size, arr):
global answer
x, y = start
# size 1์ธ ์ ์ฌ๊ฐํ์ ๊ฒฝ์ฐ
if size == 1:
if arr[x][y]:
answer[1] += 1
else:
answer[0] += 1
return
# size์ธ ์ ์ฌ๊ฐํ ๋ด๋ถ๊ฐ ๋ชจ๋ ๋์ผํ ์์์ธ์ง ์ฒดํฌ
temp = arr[x][y]
flag = True
for i in range(size):
for j in range(size):
nx = x + i
ny = y + j
if temp != arr[nx][ny]:
flag = False
break
# ์๋ ๊ฒฝ์ฐ 4์กฐ๊ฐ์ผ๋ก ์ชผ๊ฐ๊ธฐ
if flag:
if temp:
answer[1] += 1
else:
answer[0] += 1
return
else:
next = size // 2
check([x, y], next, arr)
check([x, y+next], next, arr)
check([x+next, y], next, arr)
check([x+next, y+next], next, arr)
return
def solution(arr):
global answer
answer = [0, 0]
size = len(arr)
check([0, 0], size, arr)
return answer
๋ถํ ์ ๋ณต ๋ฌธ์ ์ด๋ค. ๋ฐฑ์ค ๊ธฐ์ค์ผ๋ก๋ ์ค๋ฒ 1~2 ์ ๋์ ๋์ด๋.
N ์ฌ์ด์ฆ์ ์ ์ฌ๊ฐํ์ 4๋ถํ ํ์ฌ ๋ด๋ถ ์์๊ฐ ๋ชจ๋ ๋์ผํ๋ฉด ํ๋๋ก ๊ณ์ฐํ๋ ๊ทธ๋ฐ ๋ฌธ์ ์ด๋ค.
์ฌ๊ท๋ฅผ ์ฌ์ฉํด์ ํ์ดํด์ผ ํ๋ค๋ ๊ฒ๋ง ์๊ณ ์์ผ๋ฉด ์ฝ๊ฒ ํ์ดํ ์ ์๋ค.
1) ์ ์ฌ๊ฐํ์ ์ฌ์ด์ฆ๊ฐ 1์ด๋ฉด ๊ธฐ์ ์กฐ๊ฑด (์ฌ๊ท๋ฅผ ๋ฉ์ถ๊ธฐ ์ํ ์ต์ ์กฐ๊ฑด)
2) ๋ด๋ถ ์ ์ฌ๊ฐํ์ ์์๊ฐ ๋ชจ๋ ๋์ผํ ์์๋ฉด ์ฌ๊ท๋ก ๋ค์ด๊ฐ์ง ์๊ณ ๊ฒฐ๊ณผ๋ง ๋ฐ์
3) ๊ทธ๊ฒ ์๋๋ผ๋ฉด, ์ ์ฌ๊ฐํ์ ๋ค์ 4๋ถํ ํด ๊ฐ๊ฐ์ ์ ์ฌ๊ฐํ์ ๋ํด ๋ค์ ํ๋จ.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ธฐ์ง๊ตญ ์ค์น (level3, python) (1) | 2022.09.25 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] 124 ๋๋ผ์ ์ซ์ (level2, python) (1) | 2022.09.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ซ์ ๊ฒ์ (level3, python) (1) | 2022.09.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ (level2, python) (0) | 2022.09.20 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ฒ ์คํธ์จ๋ฒ (level3, python) (0) | 2022.09.20 |