ํฐ์คํ ๋ฆฌ ๋ทฐ
๋ฌธ์
๋ฌธ์ ํ์ด
https://choi95.tistory.com/126
ํด๋น ๋ฌธ์ ๋ ์ด์ ์ ํฌ์คํ ํ๋ ๋ฏธ๋ก ํ์ ๋ฌธ์ ์ ๋งค์ฐ ์ ์ฌํ์ง๋ง ๋ค์๊ณผ ๊ฐ์ ์ฐจ์ด์ ์ด ์๋ค.
- ํ์ ๋ฐฉํฅ์ด '์ข ์ฐ ์ ํ' ์ธ์๋ ๋๊ฐ์ ๊น์ง ํฌํจ๋์ด์ผ ํ๋ค.
- ์ฌ๋ฌ ๊ฐ๋์ ๊ธธ์ ๊ตฌํ๋ ๋ฏธ๋ก ํ์์ ํ๋ฒ ํ์ํ๋ ๊ธธ์ ๊ฐ๋ ์ง์ ์ผ๋ก ์ฒดํฌํ ๋ค์ ๋ฐฑํธ๋ํน์ ํ ๊ฒฝ์ฐ๋ฅผ ๋๋นํด ๋ค์ ์ฌ๊ท ํธ์ถ์ ๋ง์น ๋ค์ ๊ฐ์ง ์์์์ผ๋ก ์ด๊ธฐํ ํด์ฃผ์ง๋ง ํด๋น ๋ฌธ์ ์์๋ ์ ํด์ ธ ์๋ ์ฌ์ ๊ตฌํ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ํ๋ฒ ํ์ํ ์ง์ ์ ๊ทธ๋๋ก ๊ฐ๋ ์ง์ ์ผ๋ก ๋๋ค(๋ฌดํ ๋ฃจํ ๋ฐฉ์ง)
์ฝ๋
function solution(board) {
let answer = 0;
let n = board.length;
let dx = [-1, -1, 0, 1, 1, 1, 0, -1]; //์๊ณ ๋ฐฉํฅ ์์๋๋ก(๋๊ฐ์ ์ขํ๊น์ง ํฌํจ)
let dy = [0, 1, 1, 1, 0, -1, -1, -1];
let m = dx.length;
function DFS(x, y) {
board[x][y] = 0; //๋ฌดํ ๋ฃจํ ๋ฐฉ์ง ๋ฐ ํ๋ฒ ์ฐธ์กฐํ ์ฌ์ ๋ค์ ์ฐธ์กฐํ์ง ์๊ฒ๋ 0์ผ๋ก ์ด๊ธฐํ
for(let k = 0; k < m; k++) {
let nx = x + dx[k];
let ny = y + dy[k];
if(nx >= 0 && nx < n && ny >= 0 && ny < n && board[nx][ny] === 1) {
DFS(nx, ny);
}
}
}
for(let i = 0; i < n; i++) {
for(let j = 0; j < n; j++) {
if(board[i][j] === 1) {
answer++;
DFS(i, j);
}
}
}
return answer;
}
let arr = [[1, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 1],
[1, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 0],
[1, 0, 1, 0, 1, 0, 0]]
console.log(solution(arr));
์ฝ๋_BFS ํ์ฉ
function solution(board) {
let answer = 0;
let n = board.length;
let dx = [-1, -1, 0, 1, 1, 1, 0, -1];
let dy = [0, 1, 1, 1, 0, -1, -1, -1];
let m = dx.length;
let queue = [];
for(let i = 0; i < n; i++) {
for(let j = 0; j < n; j++) {
if(board[i][j] === 1) {
board[i][j] = 0; //์ฌ๊ธฐ์ ์ค์ํ ์ ์ ํ์ ์ฌ์ ์ขํ ์ ๋ณด๋ฅผ ํธ์ฌํด์ฃผ๊ธฐ ์ ์ ๋ฐ๋์ ํด๋น ์ขํ๋ฅผ ์ํํ ์ง์ ์ผ๋ก ์ฒดํฌํด์ผ ํ๋ค๋ ๊ฒ์ด๋ค(๋ฌดํ ๋ฃจํ ๋ฐฉ์ง)
queue.push([i, j]);
answer++;
while(queue.length) {
let [x, y] = queue.shift();
for(let k = 0; k < m; k++) {
let nx = x + dx[k];
let ny = y + dy[k];
if(nx >= 0 && nx < n && ny >= 0 && ny < n && board[nx][ny] === 1) {
board[nx][ny] = 0;
queue.push([nx, ny]);
}
}
}
}
}
}
return answer;
}
let arr = [[1, 1, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 1, 1, 0],
[0, 1, 0, 0, 0, 0, 0],
[0, 0, 0, 1, 0, 1, 1],
[1, 1, 0, 1, 1, 0, 0],
[1, 0, 0, 0, 1, 0, 0],
[1, 0, 1, 0, 1, 0, 0]]
console.log(solution(arr));
'์๊ณ ๋ฆฌ์ฆ > ํ๊ทธ ๋ณ ํ์ด' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[LIS]์ต๋ ๋ถ๋ถ ์ฆ๊ฐ ์์ด (0) | 2021.08.16 |
---|---|
[๋์ ๊ณํ๋ฒ]๊ณ๋จ์ค๋ฅด๊ธฐ (0) | 2021.08.15 |
[BFS: ์ํํธ๋ฆฌํ์]์ก์์ง ์ฐพ๊ธฐ (0) | 2021.08.13 |
[BFS]์ด์งํธ๋ฆฌ ๋์ด ์ฐ์ ํ์ (0) | 2021.08.13 |
[DFS]๋ฏธ๋ก ํ์ (0) | 2021.08.11 |
๋๊ธ