https://programmers.co.kr/learn/courses/30/lessons/68645
힘들었던 문제인데 결국 시간을 들여서 해결했다.
핵심은 달팽이 패턴의 규칙성을 찾아서 적용하는 것이다.
한줄을 입력하면 입력해야 하는 숫자가 1씩 줄어든다는 것, 그리고 입력이 끝나면 row 와 col 이 어디부터 시작해야 하는지 파악하면 코드를 짤 수 있다.
function solution(n) {
var answer = Array(n).fill(0).map((v,i) => Array(i+1));
let number = 1;
let row = 0, col = 0;
while (n > 0){
for (let i = 0; i < n; i++){
answer[row++][col] = number++;
}
row--;
col++;
n--;
for (let i = 0; i < n; i++){
answer[row][col++] = number++;
}
row--;
col -= 2;
n--;
for (let i = 0; i < n; i++){
answer[row--][col--] = number++;
}
row += 2;
col++;
n--;
}
return answer.flat();
}