격자판 합계


문제 설명

55 격자판에 아래롸 같이 숫자가 적혀있습니다.
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
N
N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다.


출력

▣ 입력설명
첫 줄에 자연수 N이 주어진다.(1<=N<=50)
두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는다.

▣ 출력설명
최대합을 출력합니다.

▣ 입력예제 1
5
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
155


문제 풀이

//격자판 합계
function solution(arr) {
    let answer=Number.MIN_SAFE_INTEGER;
    let n = arr.length;
    //sum1 행의 값
    //sum2 열의 값    
    let sum1 = sum2=0;
    for (let i =0; i<n; i++){
        sum1=sum2=0;
        for(let j =0; j<n; j++){
            sum1 += arr[i][j];
            sum2 += arr[j][i];
        }
        answer=Math.max(answer, sum1, sum2);
    }
    //대각선
    sum1=sum2=0;
    for(let i=0; i<n; i++){
        // sum1= 행과 열의 값이 같기때문에 대각선이 된다.
        //sum2 = 반대편 끝쪽 대각선이다.
        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로 잡고 시작해야하며 sum1에는 행의 값 sum2에는 열의값을 넣어주고 대각선에는 sum1에는 행과 열 index의 값이 같으면 대각선이다.

profile
개발 옆차기

0개의 댓글