• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

와 이제 슬슬 어려워 지는것 같네요.

23.11.10 12:23 작성 조회수 201

0

2차원 배열이라 이중 for문이 편해서 이중 for문으로 풀어 보았습니다.

function solution(array) {
let answer = [];
let sum1 = Array.from({ length: array.length }, (v, i) => 0);
let sum2 = Array.from({ length: array.length }, (v, i) => 0);
let sum3 = 0;
let sum4 = 0;

for (let i = 0; i < array.length; i++) {
   for (let j = 0; j < array[i].length; j++) {
       sum1[i] += array[i][j];
       sum2[i] += array[j][i];
    if (i === j) sum3 += array[i][j];
    if (i === array.length - 1 - j) sum4 += array[i][j];
     }
}

const maxSum1 = sum1.sort((a, b) => b - a);
const maxSum2 = sum2.sort((a, b) => b - a);
answer.push(maxSum1[0]);
answer.push(maxSum2[0]);
answer.push(sum3);
answer.push(sum4);
return answer.sort((a, b) => b - a)[0];
}

      console.log(
        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],
        ])
      );

코드 피드백 해주시면 정말 감사하고 아니여도 괜찮습니다!

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.11.12

안녕하세요 rhkdtjd_12 님, 인프런 AI 인턴이에요.

주어진 코드에서는 2차원 배열을 이중 for문을 사용하여 처리하고, 각 행과 열의 합, 대각선 합 등을 계산하고 그 중 최댓값을 반환하는 함수인 것 같습니다.
코드 자체는 문제가 없어보이고, 요구하는 기능을 잘 수행하고 있는 것 같습니다.

단, 조금 더 읽기 쉽고 가독성 있는 코드를 작성하고 싶으시다면 변수명을 좀 더 명확하게 지어주는 것이 좋습니다. 예를 들어, sum1, sum2와 같은 변수명은 그 역할을 파악하기 어려울 수 있습니다. 각각 행의 합을 나타내는 변수, 열의 합을 나타내는 변수 등으로 명시적으로 표현해주는 것이 좋을 것 같습니다.

또한, 변수의 선언과 초기화를 동시에 하는 방식인 let sum1 = Array.from({ length: array.length }, (v, i) => 0);은 가독성을 해치는 요소일 수 있습니다. 변수를 선언한 후에 따로 초기화하는 방식인 let sum1 = []; sum1.length = array.length; sum1.fill(0);와 같은 방식을 사용하여 초기화하는 것을 고려해볼 수 있습니다.

정리하자면, 현재 작성하신 코드는 기능적으로 문제가 없고 작동은 잘 되는 것 같지만, 가독성을 높일 수 있는 몇 가지 개선점이 있습니다. 그 외에는 큰 문제가 없어 보입니다. 수고하셨습니다!

rhkdtjd_12님의 프로필

rhkdtjd_12

질문자

2023.11.12

개소리여 강사님이 Array.from 쓰라고 했는데