작성
·
270
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
안녕하세요 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);
와 같은 방식을 사용하여 초기화하는 것을 고려해볼 수 있습니다.
정리하자면, 현재 작성하신 코드는 기능적으로 문제가 없고 작동은 잘 되는 것 같지만, 가독성을 높일 수 있는 몇 가지 개선점이 있습니다. 그 외에는 큰 문제가 없어 보입니다. 수고하셨습니다!
개소리여 강사님이 Array.from 쓰라고 했는데