๐ฅ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/68936
๐ฅํ์ด ํต์ฌ
์ด๋ค์์ญ์ด 4๋ถํ ๋ ์ ๊ทธ ๊ฐ๊ฐ์ 4๋ถํ ๋ ์์ญ์ ์๋ก์ด ์์ญ์ผ๋ก ์ก์์ ๋ค์ ๊ฐ์ ๋์์ ๋ฐ๋ณตํ๋ ํ๋ก์ธ์ค๋ฅผ ์ฝ๋๋ก ์์ฑํ๋๊ฒ ํต์ฌ์ธ๋ฐ ์ฌ๊ทํจ์๋ฅผ ์ด์ฉํด์ ํ์๋ค.
๐ฅํ์ด
์ผ๋จ 0,1 ์ count ํ ์ ์๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๋ค.
dfs๋ผ๋ ํจ์๋ฅผ ์ ์ํ๊ณ ์ด๋ฅผ ์ฌ๊ท์ ์ผ๋ก ์ด์ฉํ์ฌ 0, 1 ์ ์นด์ดํธํ์๋ค.
dfs๋ฅผ ์ดํด๋ณด์..
์์ถํด์ผํ ์ด๋ค์์ญ์ ๊ฐ์ฅ ์ข์ธก์๋จ์ row index์ column index๋ฅผ ๊ฐ๊ฐ ๋๋ x, y๋ผ ์ค์ ํ์๊ณ ํด๋น ์์ญ ํ๋ณ์ ๊ธธ์ด๋ฅผ l๋ก ์ก์๋ค. ์ฒ์์ ๊ทธ ์์ญ์ ๋ชจ๋ ๊ฐ์ด ๋์ผ ํ์ง ์ด๋ฅผ ํ๋จํ๊ณ ๋ง์ฝ ๋์ผํ๋ค๋ฉด (set.size===1) ํด๋น ์์ถ๊ณผ์ ์ return์ ํตํด ์ข ๋ฃํ๊ณ ๋ง์ฝ ๊ฐ์ง ์๋ค๋ฉด 4๋ถํ ์ ํ์ฌ ๊ฐ๊ฐ์ ์์ญ์ ๋ค์ ์์ถ๊ฐ๋ฅํ์ง ํ์ธํ๋ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ๋ง์ฝ l์ ๊ธธ์ด๊ฐ 1์ด๋ผ๋ฉด 4๋ฑ๋ถ์ ๋ ์ด์ ํ ์ ์์ผ๋ฏ๋ก ํด๋น ๊ณผ์ ์ ์ข ๋ฃํ๋ค.
function solution(arr) {
let answer = {
0:0,
1:0
}
let dfs = (x,y,l) =>{
// ๋์ด์ ๋ถํ ๋ชปํ ์
if(l===1){
++answer[arr[x][y]]
return
}
// ๋ชจ๋ ๊ฐ์์ง ํ์ธ
let set = new Set([])
for(let i=x; i<=x+l-1; ++i){
let sliced = arr[i].slice(y,y+l)
sliced.forEach((n)=>set.add(n))
}
if(set.size===1){
let n = [...set][0]
++answer[n]
return
}else{
// ์๋ ์ ๋ค์ 4์กฐ๊ฐ
dfs(x,y+l/2,l/2) //์ฐ์
dfs(x,y,l/2) //์ข์
dfs(x+l/2,y,l/2,l/2) //์ขํ
dfs(x+l/2,y+l/2,l/2) //์ฐํ
}
return
}
dfs(0,0,arr.length)
return [answer[0],answer[1]];
}
'๐Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ์ ์ ์ผ๊ฐํ (0) | 2024.08.04 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๊ฒน์น๋ ์ ๋ถ์ ๊ธธ์ด (0) | 2024.07.20 |
ํ๋ก๊ทธ๋๋จธ์ค[JS] > ๋คํธ์ํฌ (0) | 2024.07.13 |
ํ๋ก๊ทธ๋๋จธ์ค [JS] > ์์์ฐพ๊ธฐ (0) | 2024.07.07 |
ํ๋ก๊ทธ๋๋จธ์ค (JS) > ๊ฐ์ฅ ํฐ์ (0) | 2024.07.04 |