행렬을 순회하며 0
요소가 있는 행과 열을 감지하여 저장한 후 재순회하며 해당 열이나 행의 요소가 발견되었을 때 0
으로 변환하는 로직을 구성했음
시간복잡도가 높기에 문제가 될거라 판단하였으나 생각과는 달리 풀어져서 놀라움
function setZeroes(matrix: number[][]): void {
const m = matrix.length
const n = matrix[0].length
const zeroRows = new Set()
const zeroCols = new Set()
// 0 요소 감지
for(let i = 0; i < m; i++) {
for(let j = 0; j < n; j++) {
if(matrix[i][j] !== 0) continue
zeroRows.add(i)
zeroCols.add(j)
}
}
// 0 행렬 반영
for(let i = 0; i < m; i++) {
for(let j = 0; j < n; j++) {
if(!zeroRows.has(i) && !zeroCols.has(j)) continue
matrix[i][j] = 0
}
}
};