
😎풀이
rowMax
: 최대 행
colMax
: 최대 열
visited
: 방문했던 셀 기억
origin
: 목표 타겟의 원래 값
- spread(sr, sc)를 통해 재귀 탐색
5-1. 이미 방문했던 셀이거나 목표 색과 현재 셀 색이 다르다면 탐색 종료
5-2. 현재 셀을 방문 기록에 추가하고 색을 목표 색으로 설정 후 이웃 셀 탐색
- 변경된 이미지 배열을 반환
function floodFill(image: number[][], sr: number, sc: number, color: number): number[][] {
const rowMax = image.length
const colMax = image[0].length
const visited = new Set<string>()
const origin = image[sr][sc]
function spread(r: number, c: number) {
const symbol = `row: ${r}, col: ${c}`
if(visited.has(symbol)) return
if(image[r][c] !== origin) return
visited.add(symbol)
image[r][c] = color
if(r > 0) spread(r - 1, c)
if(c < colMax - 1) spread(r, c + 1)
if(r < rowMax - 1) spread(r + 1, c)
if(c > 0) spread(r, c - 1)
}
spread(sr, sc)
return image
};