Recent Posts
Link
250x250
오늘보다 더 나은 내일의 나에게_
자바 알고리즘 문제 풀이 Array Q09_격자판 최대합 본문
728x90
설명
5*5 격자판에 아래와 같이 숫자가 적혀있습니다.
N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가 장 큰 합을 출력합니다.
입력
첫 줄에 자연수 N이 주어진다.(2 <=N <=50)
두 번째 줄부터 N 줄에 걸쳐 각 줄에 N개의 자연수가 주어진다. 각 자연수는 100을 넘지 않는다.
출력
최대합을 출력합니다.
예시 입력1
예시 출력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 19155
코드
해설 코드
import java.util.*; class Main { public int solution(int n, int[][] arr){ int answer=-2147000000; int sum1=0, sum2=0; 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)); } }
풀이 및 정리
먼저 각 행의 합, 각 열의 합, 대각선의 합을 구하는 방법을 알아야 문제를 풀 수 있다.
각 행의 합을 저장할 변수 2개 를 선언한다. 그리고 answer 변수에 최솟값인 Integer.MIN_VALUE 로 초기화시켜준다.
answer 변수와 각 행, 각 열의 합을 Math.max(arg1, arg2)로 비교해 더 큰 값을 answer에 저장시킨다.
반복문을 돌리고 난 후에는 각 행, 각 열의 합 중 최댓값이 answer에 대입된다.
728x90
'ALGORITHM > inflearn_javaAlgorithm' 카테고리의 다른 글
자바 알고리즘 문제 풀이 Array Q11_임시반장 정하기 (0) | 2022.02.19 |
---|---|
자바 알고리즘 문제 풀이 Array Q10_봉우리 (0) | 2022.02.19 |
자바 알고리즘 문제 풀이 Array Q08_등수구하기 (0) | 2022.02.13 |
자바 알고리즘 문제 풀이 Array Q07_점수계산 (0) | 2022.02.13 |
자바 알고리즘 문제 풀이 Array Q06_뒤집은 소수 (0) | 2022.02.13 |
Comments