Oops, All Code!/🤯 Oops, My Algorithm!

꒰ྀི 13. LeetCode:: 행과 열의 합이 주어진 유효한 행렬 찾기

밍동망동 2024. 7. 24. 13:34
주어진 rowSum과 colSum을 만족하는 행렬을 구성한다.
각 행과 열의 합이 주어진 값을 만족하는 동시에, 음이 아닌 정수여야 한다.

 

이 문제를 해결하기 위해 탐욕법을 사용했다.

각 셀에 가능한 최댓값을 할당하며 rowSum과 colSum을 줄여나간다.

1. rowSum과 colSum의 크기에 맞는 행렬 초기화
2. 각 셀에 최댓값을 할당하며 줄여나감
3. 모든 rowSum과 colSum이 0이 될 때까지 반복함

 

function restoreMatrix(rowSum, colSum) {
    const numRows = rowSum.length;
    const numCols = colSum.length;
    const matrix = Array.from({ length: numRows }, () => Array(numCols).fill(0));

    let i = 0, j = 0;

    while (i < numRows && j < numCols) {
        const minValue = Math.min(rowSum[i], colSum[j]);
        matrix[i][j] = minValue;
        rowSum[i] -= minValue;
        colSum[j] -= minValue;

        if (rowSum[i] === 0) {
            i++;
        }
        if (colSum[j] === 0) {
            j++;
        }
    }

    return matrix;
}
1. 행렬의 크기를 초기화함
2. 두 포인터 i와 j를 이용해 행과 열을 가리키게함
3. 할당된 값을 rowSum[i]와 colSum[j]에서 빼줌
4. rowSum과 colSum이 0이 될 때까지 반복함