Algorithm
SW Expert Academy <Sum>
seungh2
2022. 5. 24. 22:07
SW Expert Academy <Sum>
https://swexpertacademy.com/main/code/problem/problemDetail.do
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
Sum
100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.
입력으로 10개의 테스트케이스가 들어온다.
각 테스트케이스의 첫 줄에는 테스트케이스 번호가 주어지고 그 다음 10개의 줄에 걸쳐 2차원 배열의 값이 주어진다.
출력으로 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하여 출력하면 된다.
문제 해결
각 행의 합은 입력으로 들어올 때 구하고, 각 열의 합은 column 배열에 누적하면서 구했다.
또한 대각선의 경우는 i == j거나 i+J가 100일 경우이기 때문에 각각 line1과 line2 변수에 누적하면서 구했다.
그리고 비교하면 된다.
코드
package sum;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for (int t = 0; t < 10; t++) {
int testcase = Integer.parseInt(br.readLine());
int[] column = new int[100];
int row = 0;
int line1 = 0;
int line2 = 0;
for (int j = 0; j < 100; j++) {
column[j] = 0;
}
for (int i = 0; i < 100; i++) {
String[] inArr = br.readLine().split(" ");
int temp = 0;
for (int j = 0; j < 100; j++) {
int a = Integer.parseInt(inArr[j]);
temp += a;
column[j] += a;
if (i == j) {
line1 += a;
}
if (i + j == 100) {
line2 += a;
}
}
if (temp > row) {
row = temp;
}
}
Arrays.sort(column);
row = Math.max(row, column[99]);
line1 = Math.max(line1, line2);
row = Math.max(row, line1);
System.out.println("#" + testcase + " " + row);
}
}
}
결과
728x90