9. 격자판 최대합
N*N의 격자판이 주어지면 각 행의 합, 각 열의 합, 두 대각선의 합 중 가장 큰 합을 출력하는 프로그램
입력) 첫 줄에 자연수 N(2<=N<=50)이 주어집니다. 두 번째 줄부터 N줄에 걸쳐 각 줄에 N개의 자연수가 주어집니다.
출력) 최대합을 출력합니다.
import java.util.Scanner;
public class Main {
public static 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 += arr[i][j]; // 행의 합
sum2 += arr[j][i]; // 열의 합
}
// sum1, sum2 중에 큰 값 -> answer
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) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int[][] arr = new int[n][n]; // 2차원 배열
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
arr[i][j] = scanner.nextInt();
}
}
System.out.println(solution(n, arr));
}
}
참고) 2차원 배열이 잘 들어갔는지 확인하는 방법(2차원 배열 출력)
// 1) 간단하게 출력하고 싶을 때
System.out.println(Arrays.deepToString(arr)); // 1차원 배열 출력은 Arrays.toString(arr)
// 2) 2차원 모양대로 출력하고 싶을 때
for (int i=0; i<n; i++) {
for (int j=0; j<n; j++) {
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
결과
'알고리즘(Java) > Array' 카테고리의 다른 글
[알고리즘]Array(배열) 11. 임시반장 정하기 - 각 학생들이 1학년부터 5학년까지 속했던 반이 주어질 때, 임시 반장 정하기 (0) | 2021.07.26 |
---|---|
[알고리즘]Array(배열) 10. 봉우리 - N*N 격자판에서 봉우리 지역이 몇 개 있는 지 알아내기 (0) | 2021.07.25 |
[알고리즘]Array(배열) 8. 등수 구하기 - N명의 학생의 등수를 순서대로 출력하기 (0) | 2021.07.24 |
[알고리즘]Array(배열) 7. 점수계산 - 시험문제의 채점 결과가 주어졌을 때, 총 점수 계산하기 (0) | 2021.07.24 |
[알고리즘]Array(배열) 6. 뒤집은 소수 - N개의 자연수가 입력되면 각 자연수를 뒤집은 후, 그 뒤집은 수가 소수이면 그 소수를 출력하기 (0) | 2021.07.24 |
댓글