1572. Matrix Diagonal Sum (javascript)

Hong GilSeong·2021년 1월 23일
1

LeetCode

목록 보기
3/3

난이도 이지 정답률 78%

문제는 이렇다 2차원 배열의 대각선 방향의 합을 구하여라.
제가 생각하기엔 배열문제는 배열의 규칙을 찾는 게 가장 중요한 것 같다.
1 5 9로 가기 위한 규칙은 무엇일까?
[0,0],[1,1],[2,2]이다. 1씩 증가한다 규칙 1 찾았다.
3 5 7로 가기 위한 규칙은 무엇일까?
[0,2],[1,1],[2,0]이다 0번 방은 1씩 증가하고 1번 방은 1씩 감소한다.

이걸 생각해서 코드를 짜보자.
Example 1:

Input: mat = [[1,2,3],
[4,5,6],
[7,8,9]]
Output: 25
Explanation: Diagonals sum: 1 + 5 + 9 + 3 + 7 = 25
Notice that element mat[1][1] = 5 is counted only once.

Example 2:

Input: mat = [[1,1,1,1],
[1,1,1,1],
[1,1,1,1],
[1,1,1,1]]
Output: 8

Example 3:

Input: mat = [[5]]
Output: 5

문제풀이 :

var diagonalSum = function(arr) {
    let answer = 0;
    const arrLen = arr.length;
    const arrHalf = Math.floor(arrLen/2);
	for(let = 0; i < arrLen; i++){
    	answer += arr[i][i] + arr[i][arrLen-1-i];
    }
    return arrLen % 2 === 1 ? answer - arr[arrHalf][arrHalf] : answer;
};
profile
알고리즘가지고놀때까지

0개의 댓글