내일배움캠프 Node.js 본캠프 81일차

김선우·2024년 12월 6일
post-thumbnail

알고리즘 문제 풀어보기

삼각 달팽이

문제 설명

정수 n이 매개변수로 주어집니다. 다음 그림과 같이 밑변의 길이와 높이가 n인 삼각형에서 맨 위 꼭짓점부터 반시계 방향으로 달팽이 채우기를 진행한 후, 첫 행부터 마지막 행까지 모두 순서대로 합친 새로운 배열을 return 하도록 solution 함수를 완성해주세요.

제한 사항

n은 1 이상 1,000 이하입니다.

풀이 코드

function solution(n) {
    let answer = [];
    let count = 0;
    let arr = Array.from({ length: n }, (_, index) => Array(index + 1).fill(0));
    let currentX = -1;
    let currentY = 0;
    while (n > 0) {
      for (i = 0; i < n; i++) {
        currentX++;
        count++;
        arr[currentX][currentY] = count;
      }
      for (i = 0; i < n - 1; i++) {
        currentY++;
        count++;
        arr[currentX][currentY] = count;
      }
      for (i = 0; i < n - 2; i++) {
        currentX--;
        currentY--;
        count++;
        arr[currentX][currentY] = count;
      }
      n -= 3;
    }
  
    for (i = 0; i < arr.length; i++) {
      answer = [...answer, ...arr[i]];
    }
  
    return answer;
  }

풀이 과정

위에서 아래로 내려가는 대각선, 왼쪽에서 오른쪽으로 이동, 아래에서 위로 내려가는 대각선의 3부분으로 나눠서 해당 위치의 값을 저장하고, 이 작업을 n의 값이 유효할 때까지 반복한다.

0개의 댓글