https://programmers.co.kr/learn/courses/30/lessons/68645
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
메소드는 처음인데, 이를 통해 이차원 배열을 하나로 만든다는 것이 신기했다. 이런 메소드가 있다는걸 기억해두자!
처음에 생각했던 규칙인데, (네방향탐색처럼 푸는 방식) 이 방식으로도 한번 풀어보자!
이분 코드를 참고하면 좋을 것 같다.