[LeetCode] 2624. Snail Traversal

Chobby·2024년 6월 28일
1

LeetCode

목록 보기
24/194

달팽이 탐색의 문제이다. 주요 포인트는 풀이가 용이하도록 실제 보드와 같은 배열을 우선 만든 후에

+1, -1이 될 수 있도록 신호를 조절하며 모든 보드를 채우면 된다.

interface Array<T> {
    snail(rowsCount: number, colsCount: number): number[][];
}


Array.prototype.snail = function(rowsCount: number, colsCount: number): number[][] {
    // 잘못된 배열이 입력될 경우 빈 배열 반환
    if((rowsCount * colsCount) !== this.length) return []
    
    // 보드판 생성
    const board = Array.from({length: rowsCount}, () => Array(colsCount))

    for (let idx = 0, row = 0, col = 0, sign = 1; idx < this.length; idx++) {
        board[row][col] = this[idx]
        row += sign
        // Y축 끝에 다다랐다면
        if (row === rowsCount || row === -1) {
            // 승강/하강 부호 변경
            sign *= -1
            row += sign
            // 다음 줄
            col++
        }
    }

    return board
}
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글