m*n 매트릭스가 주어질 때 이 매트릭스가 Toeplitz이면 true , 아니라면 false를 리턴하는 문제이다
이 때 Toeplitz는 매트릭스의 각각 대각선 성분들의 값이 전부 동일한 상태를 말한다.
Example을 보자
1번 예시와 같이 각 대각선에 대하여 대각선 상의 숫자들이 전부 같으면 true , 2번 예시와 같이 하나라도 틀리다면 false를 리턴하면 된다
const isToeplitzMatrix = function (matrix) {
const height = matrix.length;
const width = matrix[0].length;
for (let i = 0; i < height - 1; i++) {
for (let j = 0; j < width; j++) {
if (matrix[i + 1][j + 1] !== undefined) {
if (matrix[i + 1][j + 1] !== matrix[i][j]) return false;
} else {
continue;
}
}
}
return true;
};
문제를 어떻게 풀어나가면 좋을지 생각을 해보다가 2차원 배열의 요소하나하나를 순회할 때 마다 현재 요소의 오른쪽 대각선 한칸의 값을 현재 요소값과 비교를 해나가면 모든 대각 요소들의 값을 비교할 수 있다는 것을 알았다.
그리하여 주어진 매트릭스의 마지막줄의 전 줄 까짐 순회를 하면서
현재 요소의 숫자와 오른쪽으로 한칸 , 아래로 한칸 이동한 값을 비교하여 값이 다르면 false를 리턴해주었다
for문을 끝까지 돌게되면 조건을 만족하는것이므로 true를 리턴해주었다
submit을 해보니
정답이었다!