문제 이해
100X100의 2차원의 배열이 주어질 때, 각 행의 합 각 열의 합 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하시오
import java.util.Scanner;
public class Solution {
static int testCase = 100;
public static void main(String[] args) {
Scanner stdIn = new Scanner(System.in);
int [][]arr = new int[testCase][testCase];
int i , j;
for(int k = 0 ; k < 10; k++) {
int temp = stdIn.nextInt();
for(i=0; i < testCase; i++)
for(j=0; j<testCase; j ++) {
arr[i][j] = stdIn.nextInt();
}
int max = 0;
int maxRow = arr[0][0];
int maxCol = arr[0][0];
int maxRdiagonal = 0;
int maxLdiagonal = 0;
// 행의 합 중 최댓값 구하기
for(i=0; i < testCase; i++) {
int row = 0;
for(j=0;j < testCase; j++) {
row += arr[i][j];
}
if(row > maxRow)
maxRow = row;
}
// 열의 합 중 최댓값 구하기
for(j = 0 ; j < testCase; j++) {
int col= 0;
for(i = 0 ; i < testCase; i++) {
col += arr[i][j];
}
if(col > maxCol)
maxCol = col;
}
//행과 열 중 큰 값 비교
if(maxCol - maxRow >= 0)
max = maxCol;
else max = maxRow;
// 오른쪽 아래 대각선 구하기
for(i = 0; i<testCase; i++) {
maxRdiagonal += arr[i][i];
}
// max와 비교하기
if(maxRdiagonal - max >= 0)
max = maxRdiagonal;
// 왼쪽 아래 대각선 구하기
for(i= 0; i< testCase; i++) {
maxLdiagonal += arr[testCase-1-i][i];
}
//max와 비교하기
if(maxLdiagonal - max >= 0)
max = maxLdiagonal;
System.out.println("#"+temp+" " +max);
}
}
}
참고자료
소프트웨어 아카데미 S/W Problem Solving
배열 정렬 참고자료
https://defacto-standard.tistory.com/18