[LeetCode] Toeplitz Matrix

준규·2022년 10월 14일
0

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을 해보니

정답이었다!

profile
안녕하세요 :)

0개의 댓글