반응형
1. 문제
- 2차원 배열과 sr, sc 좌표, color가 주어질 때, [sr,sc] 좌표의 color와 동일한 색상을 가지는 인접한 노드 전부를 color로 변경한 2차원 배열을 반환하라.
2. 해결
const row =[-1, 1, 0, 0];
const col = [0, 0, -1, 1];
function floodFill(image: number[][], sr: number, sc: number, color: number): number[][] {
if(image[sr][sc] === color) {
return image;
}
const originColor = image[sr][sc];
image[sr][sc] = color;
for(let i=0 ; i< 4; i++) {
const adjustX = sr + row[i], adjustY =sc + col[i];
if((adjustX >=0 && adjustX < image.length && adjustY >= 0 && adjustY < image[sr].length) && image[adjustX][adjustY] === originColor)
floodFill(image, adjustX, adjustY, color);
}
return image;
};
- 주어진 좌표에서 인접한 노드를 모두 탐색해야하기 때문에 DFS를 사용했다.
- 인접한 노드를 판별하고, [sr,sc]와 동일한 컬러이면 탐색을 이어나간다.
- color로 색칠된 노드는 방문하지 않는다.