LeetCode - 1572. Matrix Diagonal Sum

henu·2023년 9월 5일
0

LeetCode

목록 보기
55/186

Solution

var diagonalSum = function(mat) {
    return mat.reduce((acc, cur, idx) =>
        idx === cur.length - 1 - idx ? acc + cur[idx] : acc + cur[idx] + cur[cur.length - 1 - idx]
    , 0)
};

Explanation

필자의 접근방법은 포인터 두 개를 이용한 방법이다.
1. 0번째 요소(배열)에서 더할 요소는 인덱스 0요소.length - 1이다.
2. 1번째 요소(배열)에서 더할 요소는 인덱스 1요소.length - 2이다.
3. 2번째 요소(배열)에서 더할 요소는 인덱스 2요소.length - 3이다.
위와 같은 패턴이 나타난다. 즉,

  • n번째 요소(배열)에서 더할 요소는 인덱스 n요소.length - 1 - n이다.

이 규칙을 이용해서 합을 구하면 된다.
주의할 점은 mat의 길이가 홀수일 경우 정중앙의 요소가 중복으로 더해진다. 이 경우는 두 포인터의 값이 동일할때 발생한다. 이 경우를 캐치해서 한 번만 더해주도록 했다.

0개의 댓글