[HackerRank] Diagonal Difference

Olivia·2025년 8월 11일
0

[HackerRank]

목록 보기
1/1

문제 설명

정사각형 형태의 2차원 배열(행렬)이 주어졌을 때, 왼쪽 대각선 (primary diagonal) 과 오른쪽 대각선 (secondary diagonal)의 합의 절댓값 차이를 구하시오.

입력 예시

3
11 2 4
4 5 6
10 8 -12

11 + 5 + -12 = 4
4 + 5 + 10 = 19
답 : 4 - 19 = 15


풀이 과정

처음에 어떻게 풀어야하는지 이해가 가지 않아서 차근차근 하나씩 손으로 적어가면서 이해했다.
여기서 가장 중요했던 개념은 array[i][i]

array[i][i]란?
해당 열의 인텍스를 찾는 것이다.

예를 들어 [1, 3, 5]가 있다고 하면, array[0][1]은 3이 된다.
0번째열에 1번째 인덱스의 값을 찾는 것이기 때문이다.

11 2 4
4 5 6
10 8 -12

의 경우에는 다음과 같이 손으로 먼저 적었다.
11, 5, -12를 먼저 추출해야했으니,

  • arr[0][0] = 11
  • arr[1][1] = 5
  • arr[2][2] = -12

그 다음으로 4, 5, 10 추출

  • arr[0][2] = 4
  • arr[1][1] = 5
  • arr[2][0] = 10

여기서 가만히보면 이런 생각이 든다. 왼쪽에서 오른쪽으로 내려가는 대각선의 경우 인덱스와 열이 같다.
arr[i][i]
하지만 오른쪽에서 왼쪽으로 내려가는 대각선은 다음과 같은 느낌이다.
지금 현재 배열의 길이가 3개다.
그럼 arr[i][배열의 길이 - i -1]을 한 값과 같다고 볼 수 있다.
그래서 다음과 같이 코드를 짰다.

 right += arr[i][(len-i-1)];

여기서 절대값을 구해야하는데, 위의 값으로는 -값이 붙는다.
그래서 Math.abs()를 사용해서 절대값을 구했다.

profile
👩🏻‍💻

0개의 댓글