본문 바로가기

ProgramSoliving

프로그래머스 : 삼각달팽이 (javascript)

반응형

문제 설명

정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.


제한사항

  • n은 1 이상 1,000 이하입니다.

입출력 예

nresult

4 [1,2,9,3,10,8,4,5,6,7]
5 [1,2,12,3,13,11,4,14,15,10,5,6,7,8,9]
6 [1,2,15,3,16,14,4,17,21,13,5,18,19
var dy = [1, 0, -1];
var dx = [0, 1, -1];

function solution(n) {
    var arr = new Array(n);
    for (let i = 0; i < n; i++) {
        arr[i] = new Array(i + 1);
    }

    var len = n;
    var d = 0;
    var y = -1;
    var x = 0;
    var cnt = 0;
    while (len != 0) {
        for (let i = 0; i < len; i++) {
            y = y + dy[d];
            x = x + dx[d];
            arr[y][x] = ++cnt;
        }
        len--;
        d = (d + 1) % 3;
    }

    var answer = [];

    for (let i = 0; i < arr.length; i++) {
        for (let j = 0; j < arr[i].length; j++) {
            answer.push(arr[i][j]);
        }
    }

    return answer;
}

console.log(solution(4));

console.log(solution(4));
반응형