프로그래밍/JAVA 프로그래밍

[코딩연습_JAVA] 격자판 최대합 구하기

Dream COM Ddulut 2024. 1. 31. 00:14

(김태원님의 알고리즘 문제풀이 강의(JAVA)를 들으며 공부중이다.)

 

격자판의 행,열,대각선 중 가장 큰 값을 출력하는 간단한 문제다.

아래는 강의를 듣기 전 본인이 직접 구현한 솔루션 코드의 일부이다.

    public int solution(int n, int[][] arr){
        int answer = 0;
        int diagonal1Sum=0, diagonal2Sum=0; //대각선 값의 합을 저장하는 변수
        for(int i=0; i<n; i++){
            int rowSum=0, columnSum=0; //행, 열 값의 합을 저장하는 변수
            diagonal1Sum+=arr[i][i];
            diagonal2Sum+=arr[n-1-i][i];
            for(int j=0; j<n; j++){ //반복문을 통해 각 행과 열 값의 합을 변수에 저장
                rowSum+=arr[i][j];
                columnSum+=arr[j][i];
            }
            int bigger=(rowSum>columnSum)?rowSum:columnSum;
            if(answer<bigger) answer=bigger; //행과 열의 합 중 더 큰 값을 answer에 저장
        }

        int biggerDiagonal=(diagonal1Sum>diagonal2Sum)?diagonal1Sum:diagonal2Sum;
        if(answer<biggerDiagonal) answer=biggerDiagonal; //대각선 값의 합들 중 큰 값을 answer과 비교하여 가장 큰 값을 저장 

        return answer;
    }

 

보다시피 나는 두 값을 비교할 때 삼항연산자를 사용했는데, Math.max() 메서드를 사용했으면 더 간단하고 편했을 것 같다.