격자판 최대합

WooBuntu·2021년 2월 17일
0

JS 90제

목록 보기
7/33
  • 강의 듣기 전 풀이
const solution = matrix => {
  const length = matrix.length;
  let max = 0;
  // 각 행의 합
  for (let row = 0; row < length; row++) {
    let sum = 0;
    for (let col = 0; col < length; col++) {
      sum += matrix[row][col];
    }
    if (sum > max) max = sum;
  }
  // 각 열의 합
  for (let col = 0; col < length; col++) {
    let sum = 0;
    for (let row = 0; row < length; row++) {
      sum += matrix[row][col];
    }
    if (sum > max) max = sum;
  }
  // 대각선 합1
  let sum1 = 0;
  for (let row = 0; row < length; row++) {
    sum1 += matrix[row][row];
  }
  if (sum1 > max) max = sum1;
  // 대각선 합2
  let sum2 = 0;
  for (let row = 0; row < length; row++) {
    sum2 += matrix[row][length - 1 - row];
  }
  if (sum2 > max) max = sum2;
  console.log(max);
};

const result = solution([
  [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);
  • 강의 내용 반영한 풀이
const solution = matrix => {
  const length = matrix.length;
  let max = 0;
  let sum1 = 0;
  let sum2 = 0;
  // 각 행의 합
  for (let row = 0; row < length; row++) {
    sum1 = 0;
    sum2 = 0;
    for (let col = 0; col < length; col++) {
      sum1 += matrix[row][col];
      sum2 += matrix[col][row];
    }
    max = Math.max(sum1, sum2, max);
  }
  sum1 = 0;
  sum2 = 0;
  for (let row = 0; row < length; row++) {
    sum1 += matrix[row][row];
    sum2 += matrix[row][length - 1 - row];
  }
  max = Math.max(sum1, sum2, max);

  return max;
};

const result = solution([
  [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);

0개의 댓글