java - 격자판 최대합 (배열)
728x90
import java.util.Scanner;
public class SumOfGrating {
public static int solution(int n, int[][] grating) {
int answer = Integer.MIN_VALUE;
int sumRow, sumCol;
for (int i = 0; i < n; i++) {
sumRow=sumCol=0;
for (int j = 0; j < n; j++) {
sumRow += grating[i][j];
sumCol += grating[j][i];
}
answer = Math.max(answer, sumRow);
answer = Math.max(answer, sumCol);
}
int diagonalSum = 0, reverseDiagonalSum = 0;
for (int i = 0; i < n; i++) {
diagonalSum += grating[i][i];
reverseDiagonalSum += grating[n - i - 1][n - i - 1];
}
answer = Math.max(answer, diagonalSum);
answer = Math.max(answer, reverseDiagonalSum);
return answer;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] grating = new int[n][n];
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
grating[i][j] = in.nextInt();
}
}
System.out.println(solution(n, grating));
}
}
문제 설명
- 숫자 n 을 입력 받은뒤 n * n 의 2차원 배열을 만들고 각 숫자를 2차원 배열로 입력 받는다.
- 2중 for 문으로 row 의 합 과 column 의 합을 구한뒤 Math 의 max method 를 이용하여 제일 큰수를 answer 에 저장한다.
- 2개의 대각선 합을 1중 for문으로 구한뒤 마찬가지로 Math 의 max method 를 이용하여 answer 에 저장하고 return 한다.
728x90
'Java > java - algorithm' 카테고리의 다른 글
java - 최대 매출(슬라이딩 윈도우) (0) | 2021.07.29 |
---|---|
java - 두배열 합치기(Two pointer) (0) | 2021.07.27 |
java - 임시반장 정하기(배열) (0) | 2021.07.26 |
java - 숫자만 추출(아스키 코드) (0) | 2021.07.18 |
Java - 유효한 팰린드롬 (정규식) (0) | 2021.07.18 |
댓글
이 글 공유하기
다른 글
-
java - 두배열 합치기(Two pointer)
java - 두배열 합치기(Two pointer)
2021.07.27 -
java - 임시반장 정하기(배열)
java - 임시반장 정하기(배열)
2021.07.26 -
java - 숫자만 추출(아스키 코드)
java - 숫자만 추출(아스키 코드)
2021.07.18 -
Java - 유효한 팰린드롬 (정규식)
Java - 유효한 팰린드롬 (정규식)
2021.07.18