하얀성 2024. 4. 15. 11:36


제출답안

각각 가로, 세로, 대각선의 합을 돌면서 구했다.

이중 반복문에는 세로, 대각선의 합을 구하는 함수를 구현해놓았다.

function solution(arr) {
  let verticalArr = [];
  let crossArr = [];
  let crossSum = 0;
  let backcrossSum = 0;
  const checkHorizontal = [...arr].map((x) => {
    return x.reduce((acc, count) => acc + count);
  });

  for (let i = 0; i < arr.length; i++) {
    let verticalSum = 0;
    crossSum += arr[i][i];
    backcrossSum += arr[i][arr.length - 1 - i];
    for (let j = 0; j < arr.length; j++) {
      verticalSum += arr[j][i];
    }
    verticalArr.push(verticalSum);
  }
  crossArr.push(crossSum);
  crossArr.push(backcrossSum);
  return Math.max(...checkHorizontal, ...verticalArr, ...crossArr);
}

let arr = [
  [10, 13, 10, 12, 15],
  [12, 39, 30, 23, 11],
  [11, 25, 50, 53, 15],
  [19, 27, 29, 37, 27],
  [19, 13, 30, 13, 19],
];
console.log(solution(arr));