연습 문제 5

1654 단어 Java문제Java
import java.util.Scanner;

public class Solution2_5 {
	
// 크기 비교 : int re = Math.max(a, b);
// 리턴형 : int , 파라미터 : 2차원 배열
public int solution(int n, int arr[][]) {
	int answer = 0;
	int sum1, sum2 = 0;
		
	// 각 행의 합
	for(int i = 0; i < n; i++) {
		sum1 = 0; sum2 = 0; // 한 번의 사이클이 끝나면 초기화해서 누적값을 없애야한다.
			
		for(int j = 0; j < n; j++) {
			sum1 += arr[i][j]; // 행의 합
			sum2 += arr[j][i]; // 열의 합 -> i,j의 순서를 바꿔도 된다.
		}
		answer = Math.max(answer, sum1); // 기존의 answer값보다 sum1이 큰가?
		answer = Math.max(answer, sum2); // 기존의 answer값보다 sum2가 큰가?
	}
		
	sum1 = sum2 = 0;
		
	for(int i = 0; i < n; i++) {
		sum1 += arr[i][i]; // 왼쪽에서 오른쪽 대각선, 같은 숫자를 넣어준다.
		sum2 += arr[i][n-i-1]; // 오른쪽에서 왼쪽 대각선, 배열은 0부터 시작하므로, -1을 해준다.
		}
		
	answer = Math.max(answer, sum1); // 기존의 answer값보다 sum1이 큰가?
	answer = Math.max(answer, sum2); // 기존의 answer값보다 sum2가 큰가?
		
	return answer;
}

	
public static void main(String[] args) {
	Solution2_5 s = new Solution2_5();
	Scanner sc = new Scanner(System.in);
	/*
	 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
	 */
		
	int n = sc.nextInt(); // 5
	int arr[][] = new int[n][n];
		
	for(int i = 0; i < n; i++) { // 1차원 배열의 크기만큼
		for(int j = 0; j < n; j++) { // 2차원 배열의 크기만큼
			arr[i][j] = sc.nextInt();
		}
	}
		
	System.out.println(s.solution(n, arr));
 }

}
  • 결과값
    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

좋은 웹페이지 즐겨찾기