난이도 이지 정답률 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; };