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},~)로 쓸 수도 있다.

 

  • 정확도 테스트 결과


     


참고

junghyeonsu.tistory.com