문제
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 19
▣ 출력예제 1
155
풀이
나는 입력받는 for문을 돔과 동시에 행의 최대값, 우상향 대각선의 합을 구하고 (이중 for문)
두번째 for문에서는 열의 최대값, 우하향 대각선의 합을 구한뒤 (이중 for문)
최대값과 비교해서 가장 큰값을 출력하는 식으로 풀었는데
강사님은 일단 값을 입력받은 뒤(for문) 따로 행,열의 합 최대값을 구하고 (이중 for문)
그 다음 대각선 두개의 합을 구한 뒤 (for문)
최대값과 비교하는 식으로 푸셨다.
코드
1) 내가 푼 풀이 :
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int[][] board = new int[n][n];
int max = 0;
int diagSum1 = 0;
for(int i=0; i<n; i++) {
int rowSum = 0;
for(int j=0; j<n; j++) {
board[i][j] = in.nextInt();
rowSum += board[i][j]; //행의 합
if(i==j) diagSum1 += board[i][j]; //우상향 대각선 합
}
if(rowSum > max) max = rowSum; //행의 최대값
}
int diagSum2 = 0;
for(int j=0; j<n; j++) {
int colSum = 0;
for(int i=0; i<n; i++) {
colSum += board[i][j]; //열의 합
if(i==j) diagSum2 += board[i][j]; //우하향 대각선 합
}
if(colSum > max) max = colSum;
}
diagSum1 = Math.max(diagSum1, diagSum2);
max = Math.max(max, diagSum1);
System.out.print(max);
}
}
2) 강사님 풀이
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));
}
}
'PS(Java) > 인프런 강의 문제' 카테고리의 다른 글
[PS] 인프런 강의 - Array 11. 임시반장 정하기 (0) | 2022.10.20 |
---|---|
[PS] 인프런 강의 - Array 10. 봉우리 (0) | 2022.10.20 |
[PS] 인프런 강의 - Array 8. 등수구하기 (0) | 2022.10.18 |
[PS] 인프런 강의 - Array 7. 점수계산 (0) | 2022.10.18 |
[PS] 인프런 강의 - Array 6. 뒤집은 소수 (0) | 2022.10.18 |