문제 요약

첫번째 input은 N x N 배열을 만들어 줄때 필요한 N의 개수

그리고 나머지 input은 그 배열의 각각의 인수의 값.

배열의 첫번째 대각선의 합(왼쪽 상단에서 시작해서 오른쪽 하단으로 끝나는)과 두번째 대각선(오른쪽 상단에서 시작해서 왼쪽 하단으로 끝나는)의 차를 절대값을 구하는 문제.

ex)

3
11 2 4
4 5 6
10 8 -12
  • 첫번째 대각선의 합 : 11 + 5 - 12 = 4
  • 두번째 대각선의 합 : 4 + 5 + 10 = 19
  • 두 대각선의 차이의 절대값 : 4 - 19 = 15

내 소스

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
class Solution {

    static void Main(String[] args) {
        int n = Convert.ToInt32(Console.ReadLine());
        int[][] a = new int[n][];
        for(int a_i = 0; a_i < n; a_i++){
           string[] a_temp = Console.ReadLine().Split(' ');
           a[a_i] = Array.ConvertAll(a_temp,Int32.Parse);
        }
        
        // primary diagonal (0,0), (1,1), (2,2)
        int primarySum = 0;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (i == j)
                    primarySum += a[i][j];
            }
        }
        
        // secondary diagonal (2,0) (1,1) (0,2)
        int secondarySum = 0;
        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < n; j++)
            {
                if (i+j == n-1)
                    secondarySum += a[i][j];
            }
        }
        
        int diff = primarySum - secondarySum;               
        Console.Write(Math.Abs(diff));
    }
}

vatsalchanana의 답안

#include <iostream>

using namespace std;

int main() {
    int n;
    cin >> n;

    int arr[n][n];

    long long int d1=0; //First Diagonal
    long long int d2=0; //Second Diagonal

    for (int i = 0; i < n; i++) {
        for (int j = 0; j < n; j++) {
            cin >> arr[i][j];
            if (i == j) d1 += arr[i][j];
            if (i == n - j - 1) d2 += arr[i][j];
        }
    }

    cout << abs(d1 - d2) << endl; //Absolute difference of the sums across the diagonals
    return 0;
}

느낀점

배열에서 첫 번째 대각선과 두번째 대각선의 인덱스 값을 구하는 방법을 생각하면 풀 수 있는 문제.

나의 경우에는 첫번째 대각선과 두번째 대각선을 각각 for문으로 돌려서 푸는 방식을 택하였다.

vatsalchanana의 경우는 for문 하나에서 대각선의 합을 구해버리는 방식으로 문제를 해결 하였다.