(김태원님의 알고리즘 문제풀이 강의(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() 메서드를 사용했으면 더 간단하고 편했을 것 같다.
'프로그래밍 > JAVA 프로그래밍' 카테고리의 다른 글
[코딩연습_JAVA] 올바른 괄호 (0) | 2024.02.17 |
---|---|
[코딩연습_JAVA] K번째 큰 수 (0) | 2024.02.14 |
[코딩연습_JAVA] 학급 회장(Hash) (24.02.12) (0) | 2024.02.13 |
[코딩연습_JAVA] 연속 부분수열 (1) | 2024.02.06 |
[코딩연습_JAVA] 봉우리 (0) | 2024.01.31 |