
😎풀이
- 대각선의 좌표 합이 짝수인 경우 우상향 대각선, 홀수인 경우 좌하향 대각선임
- 우상향 대각선의 경우
2-1. 상향 종료점이 첫 행이라면, 다음 열로 이동
2-2. 상향 종료점이 끝 열이라면, 다음 행으로 이동
2-3. 그 외의 경우 행은 감소하고 열은 증가하며 우상향
- 좌하향 대각선의 경우
3-1. 하향 종료점이 끝 행이라면, 다음 열로 이동
3-2. 하향 종료점이 첫 열이라면, 다음 행으로 이동
3-3. 그 외의 경우 행은 증가하고 열은 감소하며 좌하향
- 각 스텝의 좌표 수를 배열 형태로 반환
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
};