<섹션2-ARRAY> 9. 격자판 최대합

조이·2021년 7월 28일
0

자바 알고리즘

목록 보기
21/41
post-thumbnail

9. 격자판 최대합

<설명>

5*5 격자판에 숫자가 적혀있습니다. N x N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다.

<입력>

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

<출력>

최대합을 출력합니다.

===================================================

<코드>

열,행,대각선 각각의 합을 구한 후 Math.max(a,b)를 이용하여 서로 비교한 다음 가장 큰 값을 반환하여 답을 구한다.

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
	public int solution(int n,int[][] array ) {
		int answer=-1;
		int sum1=0;
		int sum2=0;
		
		for(int i=0;i<n;i++) {
			sum1=0;
			sum2=0;
			for(int j=0;j<n;j++) {
				sum1+=array[i][j];
				sum2+=array[j][i];
			}
			answer=Math.max(answer, sum1);
			answer=Math.max(answer, sum1);
		}
		sum1=0;
		sum2=0;
		for(int i=0;i<n;i++) {
			sum1+=array[i][i];
			sum2+=array[i][n-1-i];
		}
		answer=Math.max(answer, sum1);
		answer=Math.max(answer, sum1);
		
		return answer;
	}
	
	
	public static void main(String[] args) {
		Main main = new Main();
		Scanner scan = new Scanner(System.in);
	    int number=scan.nextInt();
	    int [][] array=new int[number][number];
	    for(int i=0;i<number;i++) {
	    	for(int j=0;j<number;j++)
	    	array[i][j]=scan.nextInt();
	    }
	    System.out.println(main.solution(number,array));
     }
}

<중요>

1)가장 큰 값 구하기

  • Math.max(a,b)를 잘 활용하기
profile
joy_study

0개의 댓글