아주 쉽게 풀 수 있는 문제. for 반복문을 이용해서 n + 1 번째(실제로는 n번째 인덱스)에 있는 값을 행과 열로 구분하여 구하고 그것을 배열에 넣고 출력만 하면 되는 문제.
다만, 주의해야 할 점은 0부터 시작하는 인덱스이니만큼 배열의 인덱스와 순서에 주의하고, 행과 열을 따로 계산해야 할 점을 꼽을 수 있다.
코드는 다음과 같다.
#include <iostream>
using namespace std;
int arr[1001][1001];
int n;
int s3, s4, ts;
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
int nn;
cin >> nn;
arr[i][j] = nn;
}
}
for(int i = 0; i < n; i++) {
int sum1 = 0;
for(int j = 0; j < n; j++) {
sum1 += arr[i][j];
}
arr[i][n] = sum1;
}
for(int j = 0; j < n; j++) {
int sum2 = 0;
for(int i = 0; i < n; i++) {
sum2 += arr[i][j];
}
arr[n][j] = sum2;
}
for(int i = 0; i < n + 1; i++) {
s3 += arr[n][i];
}
arr[n][n] = s3;
for(int i = 0; i < n +1; i++) {
for(int j = 0; j < n + 1; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
return 0;
}
해당 코드가 번잡한데, 함수를 통해 정리하면 좀 더 깔끔하게 정리할 수 있다.
#include <iostream>
using namespace std;
int arr[1001][1001];
int n;
void srow() {
for(int i = 0; i < n; i++) {
int sum = 0;
for(int j = 0; j < n; j++) {
sum += arr[i][j];
}
arr[i][n] = sum;
}
}
void scol() {
for(int j = 0; j < n; j++) {
int sum = 0;
for(int i = 0; i < n; i++) {
sum += arr[i][j];
}
arr[n][j] = sum;
}
}
void slowandcol() {
int sum = 0;
for(int i = 0; i < n + 1; i++) {
sum += arr[n][i];
}
arr[n][n] = sum;
}
void show() {
for(int i = 0; i < n +1; i++) {
for(int j = 0; j < n + 1; j++) {
cout << arr[i][j] << " ";
}
cout << endl;
}
}
int main() {
cin >> n;
for(int i = 0; i < n; i++) {
for(int j = 0; j < n; j++) {
int nn;
cin >> nn;
arr[i][j] = nn;
}
}
srow();
scol();
slowandcol();
show();
return 0;
}