[JavaScript][Programmers] 삼각 달팽이

조준형·2021년 8월 5일
0

Algorithm

목록 보기
51/142
post-thumbnail

🔎 삼각 달팽이

❓ 문제링크

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

📄 제출 코드

function solution(n) {
    const answer = new Array(n).fill().map((_, i) => new Array(i + 1));
    
    let count = 0;
    let x = -1;
    let y = 0;
    while (n > 0) {
        for (let i = 0; i < n; i++) {
            count++;
            x++;
            answer[x][y] = count;
        }
        for (let i = 0; i < n - 1; i++) {
            count++;
            y++;
            answer[x][y] = count;
        }
        for (let i = 0; i < n - 2; i++) {
            count++;
            x--;
            y--;
            answer[x][y] = count;
        }
        n -= 3;
    }

    
    // let res = answer.reduce((answer, cur) => {
    //     console.log(`answer : ${answer}, cur : ${cur}`)
    //     return answer.concat(cur);
    // });

    return answer.flat();
}
let n = 4;
console.log(solution(n));

처음에 어떤 규칙이 있을거 같아서 규칙을 찾아 해보려다가 결국 못찾았다.
그래서 아래로 내려가는 동작, 옆으로 이동하는 동작, 위로 올라가는 동작 이렇게 삼각형을 계속 돌도록 구현하였다.
다 구현한 후 결과는 제대로 나왔는데 문제는 이걸 1차원 배열로 나타내는 방법이였다.
검색을 통해 찾았고 , reduce와 concat을 이용하여 나타낼 수 있다.
또 다른 방법으로는 flat을 사용하면 1차원배열로 나타낼 수 있다.

📘 참고

https://velog.io/@mnmm/js-pre-concat
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/flat

profile
깃허브 : github.com/JuneHyung

0개의 댓글