N

(SWEA c++)1209. [S/W 문제해결 기본] 2일차 - Sum 본문

SW Expert Academy

(SWEA c++)1209. [S/W 문제해결 기본] 2일차 - Sum

naeunchan 2020. 10. 7. 10:05
728x90
반응형

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

 

SW Expert Academy

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

swexpertacademy.com

10번의 test case가 주어진다.

가로, 세로, 왼쪽 대각, 오른쪽 대각의 합을 구하여 최대값을 구하도록 한다.

 

우선 100 x 100 크기의 수를 받아온다.

받아올 때 이중 for문 안에서 가로(row), 왼쪽 대각(ldia), 오른쪽 대각(rdia)의 값을 구할 수 있다.

행이 바뀔 때 max보다 row가 크면 최대값을 row로 바꿔주도록 한다.

 

값을 받아오고 세로(col)의 값을 구하여 max보다 크면 max값을 col로 바꿔주도록 한다.

마지막으로는 max와 ldia, rdia를 비교하여 큰 값으로 바꿔주면 된다.

#include <iostream>

using namespace std;

int main(void)
{
    int arr[100][100];
    
    for(int i = 1; i <= 10; i++)
    {
        int n, max = 0, row = 0, col = 0, ldia = 0, rdia = 0;
        cin >> n;
        
        for(int j = 0; j < 100; j++)
        {
            row = 0;
            for(int k = 0; k < 100; k++)
            {
                cin >> arr[j][k];
                row += arr[j][k];
                if(j == k)
                    ldia += arr[j][k];
                if(k == 99 - j)
                    rdia += arr[j][k];
            }
            if(max < row)
                max = row;
        }
        
        for(int j = 0; j < 100; j++)
        {
            col = 0;
            for(int k = 0; k < 100; k++)
                col += arr[k][j];
            if(max < col)
                max = col;
        }
        
        if(max < ldia)
            max = ldia;
        if(max < rdia)
            max = rdia;
        
        cout << "#" << i << " " << max << endl;
    }
    return 0;
}
728x90
반응형