
일단 문제 접근을 위해 new int[n][n] 2차원 배열을 생각한다.
각 2차원 배열에 반시계 방향으로 채워넣은 값들을 넣고, 이를 추후에 answer 배열에 넣어주는 방식으로 접근했다.

이렇게 총 3방향으로 나눌 수 있는데, 이 방향은 i 변수를 사용해서 각각 x, y 값을 수정해준다.
그리고 answer 배열의 총 길이는 주어진 예제를 보면 쉽게 공통점을 찾아 계산할 수 있는데, n*(n+1)/2 계산을 통해 손쉽게 길이를 구할 수 있다.
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 num=1;
for(int i=0; i<n; i++){
for(int j=i; j<n; j++){
if(i%3==0){
x++;
}
else if(i%3==1){
y++;
}
else if(i%3==2){
x--;
y--;
}
arr[x][y] = num++;
}
}
int idx=0;
for(int i=0; i<n; i++){
for(int j=0; j<n; j++){
if(arr[i][j] == 0 ) break;
answer[idx++] = arr[i][j];
}
}
return answer;
}
}