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