728x90
const createMatrix = (village) => {
const matrix = [];
village.forEach((line) => {
const row = [];
for (let i = 0; i < line.length; i++) row.push(line[i]);
matrix.push(row);
});
return matrix;
};
//이 위에 함수는 따로따로 되어 있는
"0101" 이런 문자열을 '0', '1', '0', '1' 이렇게 바꿔줌
const gossipProtocol = function (village, row, col) {
let mat = createMatrix(village); //배열을 바꾸고
let vis = Array.from(Array(village.length), () => Array(village[0].length).fill(0));//방문했는지에 대한 배열
let queue = [];//큐
let cur_x, cur_y,x,y;
let dx = [1,0,-1,0]; //상하좌우
let dy = [0,1,0,-1]; //상하좌우
queue.push(row); //큐에 x 넣고
queue.push(col); //큐에 y 넣고
vis[row][col] = 1; //해당 자리를 방문했다고 넣어주고
while(queue.length>=1) { //큐가 비어있을 때 까지 돈다
x = queue.shift();
y = queue.shift();
for(let i=0;i<4;i++) {
cur_x = x + dx[i];
cur_y = y + dy[i];
if(cur_x<0 || cur_x>=village.length || cur_y<0 || cur_y>=village[0].length) continue;
if(village[cur_x][cur_y] === '0' || vis[cur_x][cur_y]>=1) continue;
vis[cur_x][cur_y] = vis[x][y]+1;
queue.push(cur_x);
queue.push(cur_y);
}
}
return Math.max(...vis.flat())-1;
};반응형
'BEB > algorithm' 카테고리의 다른 글
| 백준6549 javascript 히스토그램, 32_largestRectangularArea (0) | 2022.12.08 |
|---|---|
| 29 binary heap 최대힙 (1) | 2022.12.05 |
| [자바스크립트] 부분 문자열의 합 26_LSCS (0) | 2022.11.30 |
| 25_robotPath (0) | 2022.11.29 |
| [Javascript] 기수정렬 (0) | 2022.11.28 |
댓글