function solution(n) {
const answer = [];
let count = 0;
let x = -1;
let y = 0;
let idx = 0;
for (let i = 0; i < n; i++) {
let arr = Array(idx++);
answer.push(arr);
}
while (n > 0) {
for (let i = 0; i < n; i++) answer[++x][y] = ++count;
for (let i = 0; i < n - 1; i++) answer[x][++y] = ++count;
for (let i = 0; i < n - 2; i++) answer[--x][--y] = ++count;
n -= 3;
}
return answer.flat();
}
구글링을 몇번 하면서 나랑 좀 비슷한 성격의 코드를 가져왔다.
일단 이 문제를 풀떄에는 형태를 직각삼각형으로 생각을 하면 편하다.
그렇게 되어서 인자를 하나씩 넣어주면 된다.
인자를 넣는 방향은 반시계방향을 따르게 된다.
flat()
메서드는 2차원 배열을 1차원 배열로 만들어 주는 것이다.
[[1,2], [3,4], [5,6]]이런 배열을
[1,2,3,4,5,6] 이렇게 만들어 준다.
일단 2차원 배열을 만들어 주면 이 형태를 직각삼각형의 형태가 될 것이고
while문을 통해서 값을 넣어주면 된다.
값이 어떻게 들어가는지 console을 통해서 확인이 가능하기 떄문에 이런 풀이방법만 생각했다면 많이 어려운 문제는 아니였다고 생각한다.