728x90
๋ฐ์ํ
https://school.programmers.co.kr/learn/courses/30/lessons/250136
ํ๋ก๊ทธ๋๋จธ์ค
SW๊ฐ๋ฐ์๋ฅผ ์ํ ํ๊ฐ, ๊ต์ก, ์ฑ์ฉ๊น์ง Total Solution์ ์ ๊ณตํ๋ ๊ฐ๋ฐ์ ์ฑ์ฅ์ ์ํ ๋ฒ ์ด์ค์บ ํ
programmers.co.kr
ํ๋ก๊ทธ๋๋จธ์ค ๋ ๋ฒจ 2.
BFS ์์ฉ ๋ฌธ์ ์ด๋ค
๋๋น์ฐ์ ํ์์ผ๋ก ์์ ์นธ ์๋ฅผ ์นด์ดํธํ๊ณ , ์ด๋ค ์ด์์ ๋ฝ์ ์ ์๋๊ฑด์ง Map์ ๋์ ํ๋ค!
์ฝ๋๊ฐ ๊ธธ๊ธด ํ์ง๋ง ํฌ๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์๋ค๊ณ ์๊ฐ๐ค
๋์ ํ์ด
let Land;
let n; let m;
let visited;
let dx = [0,1,0,-1];
let dy = [-1,0,1,0];
let columnMap = new Map();
const saveColumns=(columns, count)=>{
for(let i=0; i<columns.length; ++i){
if(columns[i]){
columnMap.set(i,columnMap.has(i)? columnMap.get(i)+count:count);
}
}
}
const canVisit=(x,y)=>{
if(x<0 || y<0 || x>=n || y>=m) return false;
if(Land[x][y]==0) return false;
if(visited[x][y]) return false;
return true;
}
const bfs=(x,y)=>{
let columns = new Array(m).fill(false);
let q = [];
let count = 1;
q.push([x,y]);
visited[x][y] = true;
while(q.length){
let [a,b] = q.shift();
columns[b] = true; // ์์ ๋ฅผ ํ๋ผ ์ ์๋ ์ด์ ์ฒดํฌ
for(let i=0; i<4; ++i){
let nx = a + dx[i];
let ny = b + dy[i];
if(canVisit(nx,ny)){
q.push([nx,ny]);
visited[nx][ny] = true;
count++;
}
}
}
saveColumns(columns, count);
}
function solution(land) {
var answer = 0;
Land = land;
n = land.length;
m = land[0].length;
visited = Array.from({length:n}, ()=> new Array(m).fill(false));
for(let i=0; i<n; ++i){
for(let j=0; j<m; ++j){
if(!visited[i][j] && land[i][j]==1) {
bfs(i, j);
}
}
}
columnMap.forEach((value)=>{
if(answer<value) {
answer = value;
}
})
return answer;
}
728x90
๋ฐ์ํ
'๐ ์๊ณ ๋ฆฌ์ฆ > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript/PGS] Lv.2 : ์ง์ง์ด ์ ๊ฑฐํ๊ธฐ (0) | 2025.04.01 |
---|---|
[Javascript/PGS] Lv.2 : ์ ํ์ ์๊ฐ ์ด๋ (0) | 2025.03.31 |
[Javascript/PGS] Lv.2 : ํผ์ฆ ๊ฒ์ ์ฑ๋ฆฐ์ง (PCCP ๊ธฐ์ถ๋ฌธ์ 2๋ฒ) (0) | 2025.03.25 |
[Javascript/PGS] Lv.3 : ์ฌํ๊ฒฝ๋ก (0) | 2025.03.24 |
[Javascript/PGS] Lv.3 : ๋ณด์ ์ผํ (0) | 2025.03.20 |