N * N 배열의 숫자로 된 격자판이 있을 때
각 행의 합 / 각 열의 합 / 대각선의 합 중 가장 큰 수를 출력하시오.

function solution(arr){
	let max = Number.MIN_SAFE_INTEGER;
	let length = arr.length; // 격자판 길이
                
    let sum_diagonal_left = 0; // 대각선 1
    let sum_diagonal_right = 0; // 대각선 2

    for (let i = 0; i < length; i ++) {
    	let sum_row = 0;
		let sum_column = 0;
        for (let j = 0; j < length; j ++) {
        	sum_row += arr[i][j];
			sum_column += arr[j][i];

            if (i === j) {
            	sum_diagonal_left += arr[i][j]; // 왼쪽부터 시작하는 대각선
            } 
                        
            if (i + j === arr - 1) {
            	sum_diagonal_right += arr[i][j]; // 오른쪽부터 시작하는 대각선
            }
        }

		max = Math.max(sum_row, sum_column);
    }

	return Math.max(max, sum_diagonal_left, sum_diagonal_right);
}

그림과 같은 격자판이 2차원 배열로 주어졌을 때
각 행/열/대각선의 합 중 최댓값을 구하는 문제였다.
행/대각선까지는 생각하기 쉬웠는데 열의 경우를 생각해내지 못했다.
(index를 역순으로 넘겨주는것)

위 내용을 잘 기억해야겠다.

profile
고양이 집사 / INTP / 프론트엔드 개발자 / 기록 용..?

0개의 댓글