https://programmers.co.kr/learn/courses/30/lessons/68645
function solution(n) {
const answer = new Array(n).fill().map((_, i) => new Array(i + 1));
let count = 0;
let x = -1;
let y = 0;
while (n > 0) {
for (let i = 0; i < n; i++) {
count++;
x++;
answer[x][y] = count;
}
for (let i = 0; i < n - 1; i++) {
count++;
y++;
answer[x][y] = count;
}
for (let i = 0; i < n - 2; i++) {
count++;
x--;
y--;
answer[x][y] = count;
}
n -= 3;
}
// let res = answer.reduce((answer, cur) => {
// console.log(`answer : ${answer}, cur : ${cur}`)
// return answer.concat(cur);
// });
return answer.flat();
}
let n = 4;
console.log(solution(n));
처음에 어떤 규칙이 있을거 같아서 규칙을 찾아 해보려다가 결국 못찾았다.
그래서 아래로 내려가는 동작, 옆으로 이동하는 동작, 위로 올라가는 동작 이렇게 삼각형을 계속 돌도록 구현하였다.
다 구현한 후 결과는 제대로 나왔는데 문제는 이걸 1차원 배열로 나타내는 방법이였다.
검색을 통해 찾았고 , reduce와 concat을 이용하여 나타낼 수 있다.
또 다른 방법으로는 flat을 사용하면 1차원배열로 나타낼 수 있다.
https://velog.io/@mnmm/js-pre-concat
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/flat