class Solution {
public int[] solution(int n) {
int[] answer = new int[n*(n+1)/2];
int[][] arr = new int[n][n];
int x = -1;
int y = 0;
int len = n;
int value = 1;
int index = 0;
while(true) {
//down
for(int i=0; i<len; i++) { arr[x+1+i][y] = value++; }
x += len;
len--;
if(len==0) { break; }
//right
for(int i=0; i<len; i++) { arr[x][y+1+i] = value++; }
y += len;
len--;
if(len==0) { break; }
//diagonal
for(int i=0; i<len; i++) { arr[x-1-i][y-1-i] = value++; }
x -= len;
y -= len;
len--;
if(len==0) { break; }
}
for(int i=0; i<n; i++) {
for(int j=0; j<=i; j++) { answer[index++] = arr[i][j]; }
}
return answer;
}
}