# 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
복사했습니다!