[알고리즘] 격자판 최대합

SOH·2021년 9월 12일
0

💡 조건

  • 각 행, 각 열, 각 대각선의 합 중 가장 큰 값 구하기

✍🏻 로직 구현

  • 행, 열, 대각선의 각각의 합을 구한다
  • Math.max() 를 이용하여 최대값을 구한다.
  • (1,1) (1,2) (1,3) (1,4) (1,5)
    (2,1) (2,2) (2,3) (2,4) (2,5)
    (3,1) (3,2) (3,3) (3,4) (3,5)
    (4,1) (4,2) (4,3) (4,4) (4,5)
    (5,1) (5,2) (5,3) (5,4) (5,5)

📘 코드

function result(arr) {
  let answer = Number.MIN_SAFE_INTEGER; // 임의로 최솟값으로 지정
  let n = arr.length;
  let sum1 = sum2 = 0;

  for (let i = 0; i < arr.length; i++) {
    sum1 = sum2 = 0; // 초기화 ( 각 배열을 순회하며 합을 구하므로, 초기 값을 설정해주어야 한다. )

    for (let j = 0; j < arr.length; j++) {
      sum1 += arr[i][j]; // row 
      sum2 += arr[j][i]; // col
    }
    answer = Math.max(answer, sum1, sum2);
  }

  sum1 = sum2 = 0; // 초기화 
  for (let i = 0; i < n; i++) {
    sum1 += arr[i][i]; // 대각선1
    sum2 += arr[i][n-i-1]; // 대각선2
  }
  answer = Math.max(answer, sum1, sum2);

  return answer;
};


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(result(arr)); // 155
profile
프론트엔드 개발자

0개의 댓글

관련 채용 정보