Algorithm/문제

21. 격자판 최대합

챛채 2023. 6. 22. 16:50

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public int solution(int n, int[][] arr) {
        int answer = Integer.MIN_VALUE;
        //행, 열 합 구해서 answer보다 크면 값 변경
        int sum1; //행의 합
        int sum2; //열의 합
        for (int i = 0; i < n; i++) {
            sum1=sum2=0;
            for (int j = 0; j < n; j++) {
                sum1+=arr[i][j];
                sum2+=arr[j][i];
            }
            answer = Math.max(answer, sum1);
            answer = Math.max(answer, sum2);
        }
        sum1=sum2=0;
        for (int i = 0; i < n; i++) {
            sum1 += arr[i][i];
            sum2 += arr[i][n - i - 1];
        }
        answer = Math.max(answer, sum1);
        answer = Math.max(answer, sum2);

        return answer;
    }
   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       int n=kb.nextInt();
       int[][] arr =new int [n][n];
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               arr[i][j]=kb.nextInt();
           }
       }
       System.out.print(T.solution(n,arr));
   }
}

 

다른 풀이

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.Scanner;

public class Main {

    public int solution(int[][] arr) {

        int max = 0;

        //대각선
        int diagonalR = 0;
        int diagonalL = 0;

        for (int i=0; i<arr.length; i++) {
            //가로행, 세로행
            int tr = 0;
            int le = 0;
            for(int j = 0; j<arr.length; j++){
                tr += arr[i][j];
                le += arr[j][i];
                if(i == j){
                    diagonalR += arr[i][j];
                }
            }
            diagonalL += arr[i][arr.length-1-i];
            max = Math.max(max,Math.max(tr, le));
        }
        max = Math.max(max,Math.max(diagonalR, diagonalL));

        return max;
    }

   public static void main(String[] args){
       Main T = new Main();
       Scanner kb = new Scanner(System.in);
       int n=kb.nextInt();
       int[][] arr =new int [n][n];
       for (int i = 0; i < n; i++) {
           for (int j = 0; j < n; j++) {
               arr[i][j]=kb.nextInt();
           }
       }
       System.out.print(T.solution(arr));
   }
}