HackerRank/Algorithms

[HackerRank] Warmup > Diagonal Difference

ruming 2021. 8. 14. 04:30

NxN크기의 배열이 입력되면 대각선 방향으로 원소들을 더한다. 두 값의 차를 맞추는 문제다.

 

코드

int diagonalDifference(int arr_rows, int arr_columns, int** arr) {
    int i, l_di=0, r_di=0, result=0;
    for(i=0; i<arr_rows; i++){
        l_di += arr[i][i];
    }
    for(i=0; i<arr_rows; i++){
        r_di += arr[i][arr_rows-1-i];
    }
    if(l_di > r_di) result = l_di - r_di;
    else    result = r_di - l_di;
    return result;
}

왼쪽에서 오른쪽 대각선으로 더한 수 = l_di

오른쪽에서 왼쪽 대각선으로 더한 수 = r_di

l_di는 그냥 arr의 인덱스가 하나씩 늘어나는 원소를 더하면 된다.

r_di는 두번째 인덱스는 끝에서 하나씩 줄고 첫번째 인덱스는 늘어나는 원소를 더하면 된다.

큰 수에서 작은 수를 빼고 그 값을 반환한다.