알고리즘/SWEA
[SWEA] 2805. 농작물 수확하기
hyerann
2019. 5. 6. 15:59
SW Expert Academy
SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!
www.swexpertacademy.com
배열의 마름모 모양에 해당하는 index의 값들의 합을 구해야하기 때문에 점점 넓어지는 윗 부분과 점점 좁아지는 밑 부분을 나눠서 index에 접근하였다.
농장의 크기/2가 중앙에 위치한 index이므로 i를 증가시키거나 감소시키면서 농장의 크기/2-i ~ 농장의 크기/2+i 에 해당하는 index의 값들을 더하면 된다.
#include <iostream>
#include <ios>
using namespace std;
int farmSize, farm[49][49];
int getResult();
int main() {
int T; cin >> T;
for (int tc = 1; tc <= T; tc++) {
cin >> farmSize;
for (int y = 0; y < farmSize; y++) {
for (int x = 0; x < farmSize; x++) {
scanf("%1d", &farm[y][x]);
}
}
cout << '#' << tc << ' ' << getResult() << "\n";
}
return 0;
}
int getResult() {
int result = 0;
for (int i = 0; i < farmSize / 2; i++) {
for (int j = farmSize / 2 - i; j <= farmSize / 2 + i; j++) {
result += farm[i][j];
}
}
for (int i = farmSize / 2; i >= 0; i--) {
for (int j = farmSize / 2 - i; j <= farmSize / 2 + i; j++) {
result += farm[farmSize - 1 - i][j];
}
}
return result;
}