5x5 격자판에
<열의 합> <행의 합>
<오르쪽 시작 대각선의 합> <왼쪽시작대각선의 합>
중 가장 큰 값을 return 시킴
function solution(arr) {
let answer = 0;
let n = arr.length
let sum1 = 0;
let sum2 = 0;
for(let i =0; i<n; i++){
sum1=0
sum2=0
for(let j=0; j<n;j++){
sum1+=arr[i][j]
sum2+=arr[j][i]
console.log(sum1, sum2)
}
answer = Math.max(answer, sum1, sum2)
}
sum1=0;
sum2=0;
for(let i = 0;i<n; i++){
sum1+=arr[i][i]
sum2+=arr[i][n-i-1]
}
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(solution(arr));
- 열의 합과 행의 합을 [i][j]로 반복
저렇게만 하게 되면 열과 행을 바뀔 때도 계속해서
누적해서 끝까지 더 하게 됨,
중간에 열과 행이 바뀔때마다 0으로 초기화를 시켜줘야
한 줄 씩 더한 값이 나오게 된다.
for문을 한번 실행 후 열과 행의 합의 변수를
아래와 같이 0으로 초기화 시켜줘야한다.
sum1=0, sum2=0
- 대각선으로 진행하기
for문 하나로 arr[i][i]를 하면 1x1 2x2 순으로 대각선으로 진행하게 됨,
오른쪽부터 왼쪽으로 가는 대각선은 n-i-1 로써 진행하게 됨
그러면 맨 첫번째 오른쪽 행은 n-0-1 으로써 4
그 다음 대각선은 n-1-1 으로써 5-1-1로 3 한 칸씩 내려가게 된다.
arr[i][i] arr[i][n-i-1]
1회 반복시 초기화 반복문이 끝난 후
sum = 0