프로그래머스 Level 2 - 삼각 달팽이
📌 문제 설명
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2F1440a9e1-7489-4b91-bb26-d5c4dd04bcf1%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.10.53.png)
![](https://velog.velcdn.com/images%2Ftnehd1998%2Fpost%2F356404c8-a13e-44c2-bae5-61bffa73d664%2F%E1%84%89%E1%85%B3%E1%84%8F%E1%85%B3%E1%84%85%E1%85%B5%E1%86%AB%E1%84%89%E1%85%A3%E1%86%BA%202022-02-28%20%E1%84%8B%E1%85%A9%E1%84%92%E1%85%AE%209.11.06.png)
📌 생각한 풀이 방법
- 3부분으로 나눠 해당 위치의 값을 저장한다.
1-1. 위에서 아래로 내려가는 대각선
1-2. 왼쪽에서 오른쪽으로 이동
1-3. 아래에서 위로 내려가는 대각선
- 해당 작업을 n의 값이 유효할 때까지 반복한다.
📌 풀이
function solution(n) {
let answer = [];
let count = 0;
let arr = Array.from({ length: n }, (_, index) => Array(index + 1).fill(0));
let currentX = -1;
let currentY = 0;
while (n > 0) {
for (let i = 0; i < n; i++) {
currentX++;
count++;
arr[currentX][currentY] = count;
}
for (let i = 0; i < n - 1; i++) {
currentY++;
count++;
arr[currentX][currentY] = count;
}
for (let i = 0; i < n - 2; i++) {
currentX--;
currentY--;
count++;
arr[currentX][currentY] = count;
}
n -= 3;
}
for (let i = 0; i < arr.length; i++) {
answer = [...answer, ...arr[i]];
}
return answer;
}