[HackerRank] Diagonal Difference

HyeLin·2022년 4월 12일
1
post-thumbnail

[문제]

Given a square matrix, calculate the absolute difference between the sums of its diagonals.
1 2 3
4 5 6
9 8 9
The left-to-right diagonal 1+5+9=15 . The right to left diagonal 3+5+9=17.
Their absolute difference is 2.

[해답]

function diagonalDifference(arr) {  
  let sum1=0;
  let sum2=0;
  
  for(let i=0;i<arr.length;i++){
    sum1 += arr[i][i]  
    sum2 += arr[i][(arr.length-1)-i]
  }

return Math.abs(sum1-sum2)
}

[나의 해석]

  for(let i=0;i<arr.length;i++){
    sum1 += arr[i][i]; 
  }
  1. 왼쪽 대각선은 arr[0][0], arr[1][1], arr[2][2] 값을 더하는 것이여서 반복문을 돌리면서 더한 값을 sum1에 넣어줬다.

  2. 오른쪽 대각선은 arr[0][2], arr[1][1], arr[2][0]인데, sum1과 같은 반복문에 넣었을 때, 어떤 규칙을 갖고 반복해야할지 헷갈렸다.

 for(let i=0;i<arr.length;i++){
    sum1 += arr[i][i]  
    sum2 += arr[i][(arr.length-1)-i]
  }
  1. 유레카 !!!! arr.length-1을 하여서 맨 뒷자리 부터 시작해서! 값이 1씩 올라가는 i를 빼주면 2,1,0이 되면서 값을 완성할 수 있었다 !!!
Math.abs(sum1-sum2)
  1. 절대값을 만들어주는 Math.abs를 사용하여 리턴해주었다.
profile
개발자

0개의 댓글