Coding test
[프로그래머스] 삼각달팽이 (Lv 2) - javascript
Jiwoo
2022. 6. 10. 00:40
문제
정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.

📝 풀이
function solution(n) {
let answer = Array.from({length: n}, (v,idx) => new Array(idx+1).fill(0));
let count = 0;
let x = -1;
let y = 0;
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.flatMap(v => v);
}
아래 블로그를 참고한 코드인데 굉장히 효율적이고 깔끔하다.
기본 x와 y를 놓고 삼각형 모양을 세 군데로 나눠 순회한다.
- 체크 포인트
Array.from(new Array(n), ~)
을Array.from({length: n},~)
로 쓸 수도 있다.
정확도 테스트 결과