2021. 8. 31. 21:58ใ๐ฑ Algorithm
https://programmers.co.kr/learn/courses/30/lessons/68936
๐ ์ฝ๋
// ๋ค๋ฅธ ๋ถ ํ์ด ์ฐธ์กฐ
def solution(arr):
N = len(arr)
answer = [0, 0]
def compress(x, y, N):
init = arr[x][y]
for r in range(x, x + N):
for c in range(y, y + N):
if arr[r][c] != init:
N //= 2
compress(x, y, N)
compress(x, y + N, N)
compress(x + N, y, N)
compress(x + N, y + N, N)
return
answer[init] += 1
compress(0, 0, N)
return answer
๐ ์ ๊ทผ ๋ฐฉ๋ฒ
1. ์ ์ฒด ์ฌ๊ฐํ์ ์ฐ์ ๊ธฐ์ค์ผ๋ก ,
2. ๋ชจ๋ ์์๋ฅผ ์ํํ๋ฉด์ ์๋ก ๋์ผํ์ง ์ฒดํฌํ๋ค.
3. ๋์ผํ์ง ์๋ค๋ฉด ๋ถ๊ธฐํ์ฌ, ์ ์ฒด ์ฌ๊ฐํ์ ์ฌ๋ฑ๋ถ์ผ๋ก ์ชผ๊ฐ ํ ๋ค ๊ฐ์ ์๋ก ๋ค๋ฅธ ์ฌ๊ฐํ์ ์๋ ํ๋ฏ ์ฌ๊ทํจ์๋ฅผ ํ์ด๋ค.
๊ทธ๋ฆผ ์์์ ํ๋์ ์ฌ๊ฐํ์ผ๋ก๋ง ์ฌ๊ท๋ฅผ ํ๋ ๊ฒ ๊ฐ์ง๋ง, ๋น์ด์๋ ๋๋จธ์ง ์ธ ๋ถ๋ถ์ผ๋ก๋ ๊ฐ์ ์ฌ๊ท๋ฅผ ํ์ฐ๋ฉด ๋๋ค.
์ฌ๊ท๋ ์ฌ๊ฐํ ๋ด๋ถ์ ๋ชจ๋ ๊ฐ์ด ๋์ผํ ๋ ๋ฉ์ถ๊ณ , ๊ฐ์ฅ ์์ ์ฌ๊ฐํ์ ๋๋ฌํ๋ฉด ํ์ฐ์ ์ผ๋ก if ์กฐ๊ฑด๋ฌธ์ด True ์ด๋ฏ๋ก ์ฌ๊ท๋ฅผ ๋ฒ์ด๋๊ฒ ๋๋ค.
๐น ์ค์ํ ์ฝ๋
๋ฆฌํด์ ์๋ชป๋ ์์น์์ ์ ์ธํด์ ์๋ฌ๊ฐ ๋ฐ์ํ๋๋ฐ,
compress() ํจ์๊ฐ ์ด๋์ return ๋ผ์ผ ํ๋์ง ํ์ ํด์ผํ๋ค.
return ์ if ๋ฌธ ๋ด๋ถ์ ์์ด์ผํ๋๋ฐ, ํ์ํ๊ณ ์ ํ๋ ์ฌ๊ฐํ์์ ํ๋๋ผ๋ ๋ค๋ฅธ ์์๊ฐ ์๋ค๋ฉด ์ฌ๊ท๋ฅผ ํ๋ ์กฐ๊ฑด๋ฌธ์ด๋ค.
์ ์ฌ๊ฐํ ๋ด๋ถ ๊ฐ์ด ๋ชจ๋ ๊ฐ์ง ์์ผ๋ฏ๋ก ์๋ก์ด ์ฌ๊ฐํ์ ๊ธฐ์ค์ผ๋ก ์ฌ๊ท๋ฅผ ํ์ด ํ ๋ฆฌํดํ์ฌ ํด๋น ํจ์๋ฅผ ์ข ๋ฃ ์์ผ์ผ ํ๋ค.
def solution(arr):
N = len(arr)
answer = [0, 0]
def compress(x, y, N):
init = arr[x][y]
for r in range(x, x + N):
for c in range(y, y + N):
if arr[r][c] != init:
N //= 2
compress(x, y, N)
compress(x, y + N, N)
compress(x + N, y, N)
compress(x + N, y + N, N)
answer[init] += 1
return # ๋ฆฌํด์ด ์ฌ๊ธฐ์์ผ๋ฉด ์ค๋ต์ด๋ค.
compress(0, 0, N)
return answer
'๐ฑ Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ชจ์์ฌ์ ํ์ด์ฌ (0) | 2021.10.07 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค [lv3] floodfill ํ์ด์ฌ (0) | 2021.09.01 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฐฉ๋ฌธ๊ธธ์ด ํ์ด์ฌ (0) | 2021.08.29 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๋ฉ๋ด ๋ฆฌ๋ด์ผ ํ์ด์ฌ (0) | 2021.08.29 |
ํ๋ก๊ทธ๋๋จธ์ค [lv2] ๊ฑฐ๋ฆฌ๋๊ธฐ ํ์ธํ๊ธฐ ํ์ด์ฌ (0) | 2021.08.03 |