배열에 숫자 채울 때 규칙이 있음
[5][5]면 5 44 33 22 11
[10][10]면 10 99 88 77 66 55 44 33 22 11
왼쪽으로 이동했다가 오른쪽으로 이동했다 방향 바꾸는 거
int turn = 1;
turn *= -1;
#include <iostream>
using namespace std;
int main() {
int test_case;
int T;
cin >> T;
for(test_case = 1; test_case <= T; ++test_case) {
int N;
int a[10][10] = {0};
int row = 0, column = -1; //행 인덱스, 열 인덱스
int num = 0; //배열에 채울 숫자
int turn = 1; //방향 바뀔 때 사용될 변수
cin >> N;
int cnt = N; //몇 번 반복해야 하는지 알려주는 변수
while(true) {
//행 채움
for(int i=0; i<cnt; i++) {
num++;
column += turn;
a[row][column] = num;
}
cnt--;
if(cnt <= 0) break;
//열 채움
for(int i=0; i<cnt; i++) {
num++;
row += turn;
a[row][column] = num;
}
turn *= -1;
}
cout << "#" << test_case << endl;
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
cout << a[i][j] << ' ';
}
cout << endl;
}
}
return 0;
}