SWEA 1209 Sum (Java)

sua_ahn·2023년 1월 12일
0

알고리즘 문제풀이

목록 보기
3/14
post-thumbnail

2차원 배열 라인의 최대합 구하기

입력값을 2차원 배열에 저장 후 합 구하기

import java.util.Scanner;

class Solution {
	public static void main(String args[]) throws Exception {
		Scanner sc = new Scanner(System.in);
        
		for(int test_case = 1; test_case <= 10; test_case++) {
			sc.nextInt();
            int[][] arr = new int[100][100];

            for(int i = 0; i < 100; i++) {
                for(int j = 0; j < 100; j++) {     
                    arr[i][j] = sc.nextInt();	// 배열에 입력받기
                }
            } 
            // 합 구하고 비교       
            int maxSum = -1;
            int dSum1 = 0;
            int dSum2 = 0;
            for(int i = 0; i < 100; i++) {
            	int rSum = 0;
                int cSum = 0;
                for(int j = 0; j < 100; j++) {
                	rSum += arr[i][j];		// 행의 합
                    cSum += arr[j][i];		// 열의 합
            	}
                maxSum = Math.max(maxSum, Math.max(rSum, cSum));
                
                dSum1 += arr[i][i];			// 대각선의 합
                dSum2 += arr[i][99 -i];		// 대각선 "
            }
            maxSum = Math.max(maxSum, Math.max(dSum1, dSum2));
            
            System.out.printf("#%s %s\n", t, maxSum);
		}
	}
}

 

합을 2차원 배열에 저장 후 비교

import java.util.Scanner;
 
class Solution {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
         
        for(int test_case = 1; test_case <= 10; test_case++) {
            sc.nextInt(); 
            int[][] sum = new int[2][101]; // 각 줄의 합 저장할 배열
             
            for(int i = 0; i < 100; i++) {
                for (int j = 0; j < 100; j++) {
                    int n = sc.nextInt();
                    
                    sum[0][i] += n;     // 행의 합
                    sum[1][j] += n;     // 열의 합
                    if (i == j) {
                    	sum[0][100] += n;}	// 대각선
                    if ((i + j) == 99) {
                    	sum[1][100] += n;}	// 대각선
                }
            }
            // 합 비교
            int maxSum = -1;
            for(int i = 0; i < 2; i++) {
                for (int j = 0; j < 101; j++) {
                    if (sum[i][j] > maxSum) {
                    	maxSum = sum[i][j];
                    }
                }
            }
            System.out.printf("#%d %d\n", test_case, maxSum);
        }
    }
}
profile
해보자구

0개의 댓글