BACK/CodingTEST
9. 격자판 최대값
코딩두통
2023. 1. 12. 23:55
728x90
/** 5*5 격자판에 아래와 같은 숫자가 적혀 있습니다.
*
* N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 힘을 출력합니다.
*
*
* @입력설명: 철 줄에 자연수 N이 주어진다. (2 <=N<=50)
* 두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지않는다.
*
* @입력예제:
* 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
* @출력예제: 155
* */
해답
public class 격자판최대합_9 {
public int solution(int n, int[][] arr){
int answer=Integer.MIN_VALUE;
int sum1 ,sum2;
for(int i =0; i<n; i++){
sum1 = sum2 =0;
for(int j=0; j<n; j++){
//sum1은 0행에 값 다할거고 sum2는 0열의 합을 다 할것
sum1+=arr[i][j];
//앞에 행이 움직이고 i가 열번호를 고정
sum2+=arr[j][i];
}
answer=Math.max(answer, sum1);
answer=Math.max(answer, sum2);
}
sum1=sum2=0;
//대각선 구하기 예)
for(int i=0; i<n; i++){
//0행0열 ,1행1열 ..
sum1+=arr[i][i];
//끝에 대각선 [0] [5-0-1] 1행5열, [1][5-1-1] 2행4열 ..
sum2+=arr[i][n-i-1];
}
answer=Math.max(answer, sum1);
answer=Math.max(answer, sum2);
return answer;
}
public static void main(String[] args) {
격자판최대합_9 T = new 격자판최대합_9();
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.println(T.solution(n,arr));
}
}
728x90