안녕 세상아,

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

SWEA

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

돈 많은 백수가 되고싶다 2024. 10. 18. 22:49

https://swexpertacademy.com/main/code/problem/problemDetail.do?problemLevel=3&problemLevel=4&contestProbId=AV13_BWKACUCFAYh&categoryId=AV13_BWKACUCFAYh&categoryType=CODE&problemTitle=&orderBy=INQUERY_COUNT&selectCodeLang=CCPP&select-1=4&pageSize=10&pageIndex=1

 

SW Expert Academy

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

swexpertacademy.com

가로, 세로, 대각선의 값을 각각 구해서 max 값을 갱신한다. 

100 * 100의 배열만 주어지기 때문에 벡터 값을 미리 100 * 100으로 설정해놓는다. 아니면 segment error 가 뜬다..

#include<iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(int argc, char** argv)
{
    int test_case;
    int T = 10;
    for (test_case = 1; test_case <= T; ++test_case)
    {
        int cnt;
        cin >> cnt;
        vector<vector<int>> v(100,vector<int>(100));

        int max_sum = 0;

        for (int i = 0; i < 100; i++) {
            for (int j = 0; j < 100; j++) {
                int x;
                cin >> x;
                v[i][j] = x;
            }
        }
        //우선 가로로 더해서 ans에 넣기
        for (int i = 0; i < 100; i++) {
            int sum = 0;
            for (int j = 0; j < 100; j++) {
                sum += v[i][j];
            }
            max_sum = max(max_sum, sum);
        }
        //세로로 더해서 ans에 넣기
        for (int i = 0; i < 100; i++) {
            int sum = 0;
            for (int j = 0; j < 100; j++) {
                sum += v[j][i];
            }
            max_sum = max(max_sum, sum);
        }
        //대각선은 어떻게 구하지?
        int ansSum = 0;
        for (int i = 0; i < 100; i++) {
            ansSum += v[i][i];
        }
        max_sum = max(max_sum, ansSum);

        int answerSum = 0;
        for (int i = 0; i < 100; i++) {
            answerSum += v[i][99 - i];
        }
        max_sum = max(max_sum, answerSum);


        cout << "#" << cnt << " " << max_sum << endl;
    }
    return 0;//정상종료시 반드시 0을 리턴해야합니다.
}