정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.
입출력 예시
n : 4
-> [1,2,9,3,10,8,4,5,6,7]
function solution(n) {
var arr = Array.from(Array(n), () => Array(n).fill(-1));
var left = 0;
var right = n - 1;
var top = 0;
var bottom = n - 1;
var num = 1;
while(left<=right && top<=bottom){
for(var i=top; i<=bottom; i++) {
arr[i][left] = num++;
}
left++;
top++
for(var i=left; i<=right; i++) {
arr[bottom][i] = num++;
}
bottom--;
var idx = 1;
for(var i=bottom; i>=top; i--) {
arr[i][right - idx++] = num++;
}
right-=2;
top++;
}
return arr.flat().filter((a) => a != -1);
}
굉장히 직관적으로,,ㅎ 풀었닿
function solution(n) {
var arr = Array.from(Array(n), () => Array(n).fill(-1));
var row = -1;
var col = 0;
var num = 1;
for (var i=n; i>0; i-=3) {
arr[++row][col] = num++;
for(var j=0; j<i-1; j++) arr[++row][col] = num++;
for(var j=0; j<i-1; j++) arr[row][++col] = num++;
for(var j=0; j<i-2; j++) arr[--row][--col] = num++;
}
return arr.flat().filter((a) => a != -1);
}
요렇게 풀면 더 간단