Algorithm
알고리즘 연습 - 격자판 최대합
updown
2021. 5. 31. 23:52
아래 강의를 보면서 연습하고 기록하고 있습니다
자바(Java) 알고리즘 문제풀이 : 코딩테스트 대비 - 인프런 | 강의
자바(Java)로 코딩테스트를 준비하시는 분을 위한 강좌입니다. 코딩테스트에서 가장 많이 출제되는 Top 10 Topic을 다루고 있습니다. 주제와 연동하여 기초문제부터 중급문제까지 단계적으로 구성
www.inflearn.com
문제
소스코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int inputInt = sc.nextInt(); // 숫자 입력받음
int[][] inputArrXY = new int[inputInt][inputInt];
for (int i = 0; i < inputInt; i++) { // for loop 돌면서 숫자들 배열에 넣는다
for (int j = 0; j < inputInt; j++) {
inputArrXY[i][j] = sc.nextInt();
}
}
int result = 0;
for (int i = 0; i < inputArrXY.length; i++) {
int tmp = 0;
int tmp2 = 0;
for (int j = 0; j < inputArrXY.length; j++) {
tmp += inputArrXY[i][j]; // 가로 값들 누적
tmp2 += inputArrXY[j][i]; // 세로 값들 누적
}
result = Math.max(result, tmp); // 가로 값 누적한것과 result 비교하여 더 큰것 result에 할당
result = Math.max(result, tmp2); // 세로 값 누적한것과 result 비교하여 더 큰것 result에 할당
}
int tmp4 = 0;
int tmp5 = 0;
for (int i = 0; i < inputArrXY.length; i++) {
tmp4 += inputArrXY[i][i]; //왼쪽 위 모서리에서 오른쪽 아래 모서리까지 누적(대각선)
tmp5 += inputArrXY[i][inputArrXY.length - i - 1]; //오른쪽 오래 모서리에서 왼쪽 위 모서리까지 누적(대각선)
}
result = Math.max(result, tmp4); // 대각선 값 누적한것과 result 비교하여 더 큰것 result에 할당
result = Math.max(result, tmp5); // 대각선 값 누적한것과 result 비교하여 더 큰것 result에 할당
System.out.println(result); // 출력
}
}