1ilsang

Developer who will be a Legend

LeetCode 1260. Shift 2D Grid

2019-11-29 1ilsangProblem Solving

Problem

이 문제는 k 만큼 배열을 한 줄씩 밀었을 때 최종 상태를 출력하는 문제다.

각각의 행으로 보면 인덱스 관리때문에 화날수 있는데, 이걸 하나로 쭉 이어붙이고 앞뒤로 k 만큼 붙인다음에 다시 2차원 배열로 만들어주면 훨씬 쉽게 풀 수 있다.

https://leetcode.com/problems/shift-2d-grid/

/**
 * @param {number[][]} grid
 * @param {number} k
 * @return {number[][]}
 */
const shiftGrid = (grid, k) => {
    const len = grid[0].length;
    const list = grid.reduce((acc, cur) => {
        acc.push(...cur);
        return acc;
    }, []);
    for(let i = 0; i < k; i++) list.unshift(list.pop());

    const ret = [];
    const tmp = [];
    for(let i = 1; i <= list.length; i++) {
        if(i % len === 0) {
            ret.push([...tmp, list[i - 1]]);
            tmp.length = 0;
            continue;
        }
        tmp.push(list[i - 1]);
    }
    
    return ret;
};

그럼 이만!