😎풀이

  1. 대각선의 좌표 합이 짝수인 경우 우상향 대각선, 홀수인 경우 좌하향 대각선임
  2. 우상향 대각선의 경우
    2-1. 상향 종료점이 첫 행이라면, 다음 열로 이동
    2-2. 상향 종료점이 끝 열이라면, 다음 행으로 이동
    2-3. 그 외의 경우 행은 감소하고 열은 증가하며 우상향
  3. 좌하향 대각선의 경우
    3-1. 하향 종료점이 끝 행이라면, 다음 열로 이동
    3-2. 하향 종료점이 첫 열이라면, 다음 행으로 이동
    3-3. 그 외의 경우 행은 증가하고 열은 감소하며 좌하향
  4. 각 스텝의 좌표 수를 배열 형태로 반환
function findDiagonalOrder(mat: number[][]): number[] {
    const m = mat.length
    const n = mat[0].length
    const board = m * n
    const result = []
    let row = 0
    let col = 0
    for(let i = 0; i < board; i++) {
        result.push(mat[row][col])
        const isUpward = ((row + col) & 1) === 0
        if(isUpward) {
            if(col === n - 1) row++
            else if(row === 0) col++
            else {
                row--
                col++
            }
        } else {
            if(row === m - 1) col++
            else if(col === 0) row++
            else {
                col--
                row++
            }
        }
    }
    return result
};
profile
내 지식을 공유할 수 있는 대담함

0개의 댓글