[프로그래머스 level2] 삼각 달팽이

문제

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


문제 풀이

코드1

function solution(n) {
    let arr=Array.from(Array(n), ()=>Array(n));
    let x=-1 ,y=0;
    let cnt=0;
    while(n>0){
        for(let i=0; i<n; i++) arr[++x][y]=++cnt;
        for(let i=0; i<n-1; i++) arr[x][++y]=++cnt;
        for(let i=0; i<n-2; i++) arr[--x][--y]=++cnt;
        n-=3;
    }
    return arr.flatMap(e=>e);
}

이문제도 결국 규칙을 찾아내면 쉬운 문제이다. 그림에 지레 겁먹지 말자!

이분의 코드를 참고해서 작성했다. 빙글빙글 돌면서 배열에 넣는 숫자가 1씩 줄어든다는 것을 활용한 코드이다. 보기에도 예쁘고 아주 맘에 드는 코드! flatMap메소드는 처음인데, 이를 통해 이차원 배열을 하나로 만든다는 것이 신기했다. 이런 메소드가 있다는걸 기억해두자!

코드2

처음에 생각했던 규칙인데, (네방향탐색처럼 푸는 방식) 이 방식으로도 한번 풀어보자!
이분 코드를 참고하면 좋을 것 같다.


이론

좋은 웹페이지 즐겨찾기