# Diagonal Difference (Warmup)
[문제]
[코드]
int diagonalDifference(vector<vector<int>> arr) {
int sub;
int left = 0, right = 0;
int n = arr.size();
for(int i = 0; i < n; i++)
{
left += arr[i][i];
right += arr[i][n-1-i];
}
sub = left - right;
return (sub < 0) ? (sub ^ 0xFFFFFFFF) + 1 : sub;
}
[코드설명]
matrix의 양쪽 대각선 합을 구하고 그 차의 절댓값을 구하는 문제다.
왼쪽 대각선은 행과 열의 인덱스가 같고, 오른쪽 대각선은 행의 인덱스는 0부터 열의 인덱스는 n-1(n은 각각 행과 열의 크기)부터 시작한다.
각 대각선의 합을 구한 후에는 그 값을 빼고, 양수인지 음수인지에 따라 반환을 달리했다.
양수일 경우에는 그 값을 그대로 반환하면 된다.
음수일 경우에는 2의 보수를 취한 후에 반환했다.
현재 int형 정수를 사용하고 있으므로 32비트짜리 1을 sub과 XOR연산하고 1을 더했다.
[채점 결과]
'알고리즘' 카테고리의 다른 글
[HackerRank] Closest Numbers (0) | 2021.11.05 |
---|---|
[HackerRank] Find the Median (0) | 2021.10.08 |
[HackerRank] A Very Big Sum (0) | 2021.09.29 |
[HackerRank] Counting Sort 2 (0) | 2021.09.29 |
[HackerRank] Compare the Triplets (0) | 2021.09.25 |