Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Tags more
Archives
Today
Total
관리 메뉴

개발의변화

프로그래머스 LV2 삼각 달팽이 본문

알고리즘

프로그래머스 LV2 삼각 달팽이

refindmySapporo 2023. 4. 14. 15:06
반응형

문제

https://school.programmers.co.kr/learn/courses/30/lessons/68645

해설

function solution(n) { //3*n-5
    let arr= Array.from({length:n},(_,i)=>Array.from({length:i+1},()=>0)) //삼각형 배열 소환
    let count = 0
    let startY = 0
    let startX = 0
    let lastX = n-1
    let lastY = 1
    while (count<n*(n+1)/2) {
        for (let i = startX; i < n; i++) {
            if(arr[i][startY]==0) arr[i][startY] = ++count 
        } //위에서 왼쪽아래로 대각선으로 값을 할당하는 반복문
        for (let i = lastY; i < n; i++) {
            if(arr[lastX][i]===0) arr[lastX][i] = ++count
        }//맨아래에서 왼쪽부터 오른쪽으로 이동하는 반복문
        for (let i = lastX-1; i >= startX; i--) {
            if(arr[i][arr[i].length-lastY]===0) arr[i][arr[i].length-lastY]=++count            
        }//오른족아래에서 위로 대가선 방향으로 이동하는 반복문
        startX = startX + 2
        startY = startY + 1
        lastX = lastX - 1
        lastY = lastY + 1
    }
    return arr.reduce((acc,cur)=>[...acc,...cur])
}

뾰족한 수가 없어서 구현으로 풀었다. 일단 해당 삼각형을 다 0으로 할당한 후에 문제처럼 세방향으로 둘레를 돌아다니면서 값을 할당하는 방식으로 짰다.

반응형