프로그래머스 - 삼각 달팽이[못품]

Lumi·2021년 11월 25일
0

알고리즘

목록 보기
43/59
post-thumbnail
function solution(n) {
  const answer = [];
  let count = 0;
  let x = -1;
  let y = 0;
  let idx = 0;
  for (let i = 0; i < n; i++) {
    let arr = Array(idx++);
    answer.push(arr);
  }

  while (n > 0) {
    for (let i = 0; i < n; i++) answer[++x][y] = ++count;
    for (let i = 0; i < n - 1; i++) answer[x][++y] = ++count;
    for (let i = 0; i < n - 2; i++) answer[--x][--y] = ++count;
    n -= 3;
  }
  return answer.flat();
}

구글링을 몇번 하면서 나랑 좀 비슷한 성격의 코드를 가져왔다.

  • 이후 내 입맛대로 조금 수정하였다.

일단 이 문제를 풀떄에는 형태를 직각삼각형으로 생각을 하면 편하다.

  • 나는 그런 생각을 못해서;; ㅠㅠ

그렇게 되어서 인자를 하나씩 넣어주면 된다.

인자를 넣는 방향은 반시계방향을 따르게 된다.

flat() 메서드는 2차원 배열을 1차원 배열로 만들어 주는 것이다.

[[1,2], [3,4], [5,6]]이런 배열을

[1,2,3,4,5,6] 이렇게 만들어 준다.

일단 2차원 배열을 만들어 주면 이 형태를 직각삼각형의 형태가 될 것이고

while문을 통해서 값을 넣어주면 된다.

값이 어떻게 들어가는지 console을 통해서 확인이 가능하기 떄문에 이런 풀이방법만 생각했다면 많이 어려운 문제는 아니였다고 생각한다.

  • 하지만 나는 생각을 못해서 못풀었다..ㅠ
profile
[기술 블로그가 아닌 하루하루 기록용 블로그]

0개의 댓글