[프로그래머스] Lv2. 삼각 달팽이 - JavaScript

이상돈·2023년 3월 26일
0
post-thumbnail

문제분류 : 코팅테스트 연습

난이도 : Level 2

출처 : 프로그래머스 - 삼각 달팽이

문제

제한사항

📌 내가 생각한 풀이

규칙만 찾으면 쉽게 풀 수 있다. 물론 그 규칙을 찾는게 어렵지만... 우선 2차원 배열을 층수에 맞게 0으로 초기화하여 생성해주고,
1. 위에서 아래로 내려갈때
2. 왼쪽에서 오른쪽으로 이동할때
3. 오른쪽에서 위로 이동할때

이 세가지로 나누어서 문제를 풀자!

// 3가지로 나누어서 풀자
// 1. 위에서 아래로 n번까지 내려가기, 그 후 n--;
// 2. 왼쪽에서 오른쪽으로 n번 이동하기, 그 후 n--;
// 3. 아래에서 위로 n번 올라가기, 그 후 n--;
// n > 0 유효할때까지 1~3번 반복
// 예시) n = 4 일경우
// 위에서 아래로 4번 내려가기
// 왼쪽에서 오른쪽으로 3번 내려가기
// 아래에서 위로 2번 올라가기
// 위에서 아래로 1번 내려가기
// 종료
function solution(n) {
    var answer = [];
    let arr = Array.from(Array(n), () => Array(n).fill(0))
    let x = -1;
    let y = 0;
    let count = 0;
    while(n > 0){
        //아래로 내려가기
        for(var i =0; i<n; i++){
            x++;
            count++;
            arr[x][y] = count;
            
            
        }
        n-=1;
        //오른쪽으로 가기
        for(var i = 0; i<n; i++){
            y++;
            count++;
            arr[x][y] = count;
        }
        // console.log(arr)
        n-=1;
        //위쪽으로 가기
        for(var i = 0; i<n; i++){
            y--;
            x--;
            count++;
            arr[x][y] = count;
        }
        n-=1;
    }
    for(var i =0; i<arr.length; i++){
        answer = [...answer, ...arr[i]];
    }
    return answer = answer.filter((d)=> d!==0);
}

📌 느낀점

규칙을 찾으면 쉬웠던 문제인데, 바로 생각하지 못하여 풀지 못했다. 규칙을 찾는 문제가 꼭 나오므로, 알고리즘 능력을 좀더 키워야겠다.

profile
사람들의 더 나은 삶을 위한 개발자

0개의 댓글