작성
·
189
1
// 각 행의 합,
// 각 열의 합,
// 두 대각선의 합
function solution(arr) {
let row = [];
let col = [];
let cross = [];
let colSum = 0;
let crossLeft = 0;
let crossRight = 0;
// 각 행의 합
for (let i = 0; i < arr.length; i++) {
let sum = arr[i].reduce((acc, cur) => acc + cur);
row.push(sum);
}
// 각 열의 합
for (let i = 0; i < arr.length; i++) {
colSum = 0;
for (let j = 0; j < arr.length; j++) {
colSum += arr[j][i];
}
col.push(colSum);
}
// 두 대각선의 합
for (let i = 0; i < arr.length; i++) {
crossLeft += arr[i][i];
}
cross.push(crossLeft);
for (let j = arr.length - 1; j !== 0; j--) {
crossRight += arr[j][j];
}
cross.push(crossRight);
console.log(row);
console.log(col);
console.log(cross);
return Math.max(...row, ...col, ...cross);
}
답변 1
0
안녕하세요^^
reduce 메서드의 시간복잡도가 O(n)입니다.
뭐 시간복잡도를 따질 문제는 아니지만 이중for문을 한 번만 돌리면서 행, 열, 대각선의 합을 한꺼번에 구해버리는 방법을 생각해 보는 것도 좋을 것 같습니다.
위에 코드도 잘하신 코드입니다