566. Reshape the Matrix

lsh__97·2021년 12월 7일
0

리트코드

목록 보기
5/7

문제 설명

In MATLAB, there is a handy function called reshape which can reshape an m x n matrix into a new one with a different size r x c keeping its original data.

You are given an m x n matrix mat and two integers r and c representing the number of rows and the number of columns of the wanted reshaped matrix.

The reshaped matrix should be filled with all the elements of the original matrix in the same row-traversing order as they were.

If the reshape operation with given parameters is possible and legal, output the new reshaped matrix; Otherwise, output the original matrix.

Example

example 1

Input: mat = [[1,2],[3,4]], r = 1, c = 4
Output: [[1,2,3,4]]

example 2

Input: mat = [[1,2],[3,4]], r = 2, c = 4
Output: [[1,2],[3,4]]

Idea

이 문제는 mat 배열을 1차원 배열로 바뀐뒤 다시 n 차원 배열로 바꾸는 문제입니다.
그래서 우선 mat을 어떻게 1차원 배열로 바꿀가 찾던중 flat 메소드를 알게 되어 1차원 배열로 만든뒤 열의 길이 c 로 잘라준값을 배열에 삽입한뒤 리턴하였습니다.

flat method

flat 메소드는 depth를 받아 depth 까지의 모든 하위배열 요소를 하나의 배열로 만들어주는 메소드 입니다
const arr1 = [1, 2, [3, 4]];
arr1.flat();
// [1, 2, 3, 4]
const arr2 = [1, 2, [3, 4, [5, 6]]];
arr2.flat();
// [1, 2, 3, 4, [5, 6]]
const arr3 = [1, 2, [3, 4, [5, 6]]];
arr3.flat(2);
// [1, 2, 3, 4, 5, 6]
const arr4 = [1, 2, [3, 4, [5, 6, [7, 8, [9, 10]]]]];
arr4.flat(Infinity);
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Solution

var matrixReshape = function(mat, r, c) {
    let arr = mat.flat()
    let result = []
    if(r*c !== arr.length) return mat
    while(arr.length){
        result.push(arr.splice(0,c))
    }
    return result
};
profile
기록 기록 기록..

0개의 댓글