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));
}
}