[JS알고리즘] 격자판 최대합
in Algorithm
N*N 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력한다
function solution(arr){
let answer=Number.MIN_SAFE_INTEGER;
let n=arr.length;
let sum1=sum2=0;
for(let i=0; i<n; i++){ //행, 열의 최대값 구하는 for
sum1=sum2=0; //j for문이 끝나면 매번 초기화 시켜주어야 한다
for(let j=0; j<n; j++){
sum1+=arr[i][j]; //i를 기준으로 j의 모든 값을 더하여 누적한다. 행을 기준으로 열 값의 합
sum2+=arr[j][i]; //j를 기준으로 i의 모든 값을 더하여 누적한다. 열을 기준으로 행 값의 합
}
answer=Math.max(answer, sum1, sum2); //answer, sum1, sum2 중에서 가장 큰 값이 answer로 입력
}
sum1=sum2=0; //이제는 새로 대각선의 합을 구해야하기 때문에 초기화 해주어야 함.
for(let i=0; i<n; i++){ //대각선의 최대값 구하는 for
sum1+=arr[i][i]; //똑같은 인덱스의 행과 열 (1,1) (2,2)...
sum2+=arr[i][n-i-1]; //sum1과 대칭인 값을 구해주어야 한다
}
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));
inflearn 자바스크립트 알고리즘 강의 내용 =)