Programming Practice/SWEA
[SWEA] 1209. SUM - D3 (C++)
Cage
2022. 5. 30. 20:56
문제
* 해당 문제의 모든 저작권은 SWEA 측에 있으며 본 블로그는 학업 흔적을 남겨 학업 상향을 위한 블로그로 이익을 추구하지 않으며 SWEA 측의 약관을 위배하지 않음을 명시합니다.*
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV13_BWKACUCFAYh
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
swexpertacademy.com
풀이
2차원 배열을 사용할 줄 아느냐를 묻는 문제인 듯하다.
대각선 구하는 방법만 알고 있으면 어려울 게 없는 문제이다.
최적화를 따로 안해서 코드 직관성이 떨어지는 편인데 더 깔끔하고 축소시킬 수 있는 문제라고 본다.
소스 코드
// Library
#include <iostream>
#include <string>
#include <stack>
#include <set>
#include <queue>
#include <deque>
#include <vector>
#include <algorithm>
#include <cmath>
#include <cstdio>
#include <map>
#include <cctype>
#include <set>
#include <string.h>
#include <string>
// std::
using namespace std;
// Test_case
int T, test_case;
// Value
int N;
int arr[100][100];
int ans = 0;
// Matrix direction
//int dx[4] = { 0, 0, 1, -1 };
//int dy[4] = { 1, -1, 0, 0 };
// Sturct
//struct st {
//};
// Main function
int main() {
// cin, cout
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
// SWEA 양식
T = 10;
//cin >> T;
for (test_case = 1; test_case <= T; test_case++) {
ans = 0;
cin >> N;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
cin >> arr[i][j];
}
}
int dsum1 = 0;
int dsum2 = 0;
for (int i = 0; i < 100; i++) {
int rsum = 0;
int csum = 0;
int rcmax = 0;
dsum1 += arr[i][i];
for (int j = 0; j < 100; j++) {
rsum += arr[i][j];
csum += arr[j][i];
}
rcmax = max(rsum, csum);
ans = max(ans, rcmax);
}
ans = max(ans, dsum1);
for (int i = 0; i < 100; i++) {
int c = 99 - i;
dsum2 += arr[c][i];
}
ans = max(ans, dsum2);
cout << "#" << N << " " << ans << '\n';
}
return 0;
}