본문 바로가기
코딩테스트/SWEA

[JAVA] SWEA 1209번 Sum

by PEKAH 2021. 7. 27.

문제

다음 100X100의 2차원 배열이 주어질 때, 각 행의 합, 각 열의 합, 각 대각선의 합 중 최댓값을 구하는 프로그램을 작성하여라.


다음과 같은 5X5 배열에서 최댓값은 29이다.

 

 

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh&categoryId=AV13_BWKACUCFAYh&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

제약 사항

총 10개의 테스트 케이스가 주어진다.


배열의 크기는 100X100으로 동일하다.


각 행의 합은 integer 범위를 넘어가지 않는다.


동일한 최댓값이 있을 경우, 하나의 값만 출력한다.

입력

각 테스트 케이스의 첫 줄에는 테스트 케이스 번호가 주어지고 그 다음 줄부터는 2차원 배열의 각 행 값이 주어진다.

출력

#부호와 함께 테스트 케이스의 번호를 출력하고, 공백 문자 후 테스트 케이스의 답을 출력한다.

풀이

정말 간단하게 모든 방향에 대한 합을 구해서 가장 큰 값을 출력하였다.

 

import java.util.Scanner;

public class Sum {
	public static int arr[][];
	
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

    	
        for(int test_case = 1; test_case <= 10; test_case++) {
        	arr = new int [100][100];
        	int max = 0;
    		int tc = sc.nextInt();

    		for (int i = 0; i < 100; i++)
    			for (int j = 0; j < 100; j++)
    				arr[i][j] = sc.nextInt();

    		for (int i = 0; i < 100; i++) {
    			tc = 0;
    			for (int j = 0; j < 100; j++) 
    				tc += arr[i][j];
    			if (tc > max) max = tc;
    		}

    		for (int i = 0; i < 100; i++) {
    			tc = 0;
    			for (int j = 0; j < 100; j++) 
    				tc += arr[j][i];
    			if (tc > max) max = tc;
    		}

    		tc = 0;
    		for (int i = 0; i < 100; i++) 
    			tc += arr[i][i];
    		if (tc > max) max = tc;

    		tc = 0;
    		for (int i = 0; i < 100; i++) 
    			tc += arr[i][99 - i];
    		if (tc > max) max = tc;

            System.out.println("#" + test_case + " " + max);
        }
    }
}

 

 

 

'코딩테스트 > SWEA' 카테고리의 다른 글

[JAVA] SWEA 1210번 Ladder1  (0) 2021.07.27
[JAVA] SWEA 1220번 Magnetic  (0) 2021.07.27
[JAVA] SWEA 1208번 Flatten  (0) 2021.07.26
[JAVA] SWEA 1206번 View  (0) 2021.07.26
[JAVA] SWEA 1204번 최빈수 구하기  (0) 2021.07.26

댓글