티스토리 뷰
Difficulty | Easy |
Language | Javascript |
Problem (문제)
Given a square matrix, calculate the absolute difference between the sums of its diagonals.
정사각형 행렬이 주어지면, 대각선의 합 사이의 절대 차이를 계산하세요.
For example, the square matrix arr is shown below:
예를 들어, 정사각형 행렬 arr이 다음과 같다면:
1 2 3
4 5 6
7 8 9
The left-to-right diagonal = 1 + 5+ 9 = 15. The right-to-left diagonal = 3 + 5+ 9 = 17. Their absolute difference is |15 - 17| = 2.
왼쪽에서 오른쪽으로 가는 대각선의 합은 1 + 5 + 9 = 15입니다. 오른쪽에서 왼쪽으로 가는 대각선의 합은 3 + 5 + 9 = 17입니다. 그 값의 절대 차이는 |15 - 17| = 2입니다.
Function description (함수 설명)
Complete the diagonalDifference function in the editor below.
diagonalDifference 함수를 아래의 에디터에서 완성하세요.
diagonalDifference takes the following parameter:
diagonalDifference는 다음과 같은 매개변수를 가집니다.
- int arr[n][m] : an array of integers (정수 배열)
Return (반환)
- int : the absolute diagonal difference (대각선의 절대 차이)
Constraint (제약)
- -100 <= arr[i][j] <= 100
Solution (풀이)
function diagonalDifference(arr) {
const length = arr.length;
let leftToRight = 0; // 왼쪽에서 오른쪽으로 가는 대각선의 합
let rightToLeft = 0; // 오른쪽에서 왼쪽으로 가는 대각선의 합
for(let i=0; i<length; i++) {
leftToRight += arr[i][i];
rightToLeft += arr[i][(length-1)-i]
}
return Math.abs(leftToRight-rightToLeft);
}
leftToRight 변수에 추가해야 할 값은 arr 배열에서 row와 column의 인덱스가 같은 값들입니다. 그래서 배열의 길이만큼 반복문을 돌리고 0부터 증가하면서 row와 column에 같은 인덱스를 넣어 leftToRight 변수에 추가해줍니다.
rightToLeft 변수는 row의 인덱스를 증가시켜야하지만, column의 인덱스는 감소해야 합니다. 그래서 row는 leftToRight와 동일하지만 column은 배열의 길이에서 row에 넣는 인덱스 값만큼 감소시키면서 rightToLeft 변수에 추가합니다.
Math는 내장 객체로 수학적인 계산을 할 때 유용하게 사용되는 표준 내장 객체입니다. Math.abs 함수는 매개변수로 넘긴 값의 절대 값을 반환해주는 함수입니다.
Math: developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math
Link: www.hackerrank.com/challenges/diagonal-difference/problem
'Algorithms > Hacker Rank' 카테고리의 다른 글
[Hacker Rank] Extra Long Factorials (Go) (0) | 2020.12.08 |
---|---|
[Hacker Rank] Apple and Orange (Javascript) (2) | 2020.12.07 |
[Hacker Rank] Birthday Cake Candles (Javascript) (0) | 2020.12.02 |
[Hacker Rank] Staircase (Javascript) (0) | 2020.11.30 |