✏️ 문제

조카를 잠 재우기 위해 달팽이 모양으로 숫자를 하나씩 적어준느 프로그램이 필요하다.
이를 위해 정사각형 모양의 달팽이 2차원 배열을 그려주는 함수를 작성하시오.
입력한 크기의 정사각형으로 아래 그림처럼 시계방향으로 돌면서 숫자를 채워 2차원 배열을 반환한다.
입력값

3,
5,
6

📝 풀이

function answer(length) {
  let result = [];

  // 1번 열만 length, 2번 열은 짝수, 3번은 length - 1, 방향 변경

  // 1. result를 2차월 배열로 변경
  for (let i = 0; i < length; i++) {
    result[i] = [];
  }

  // 2. 패턴 기반으로 반복문 구현
  //   1) lenth 길이 만큼 시작해서 숫자를 채워준다.
  //   2) length - i, 방향, 2회
  //   3) length == 0, 프로그램이 멈춘다.

  let direction = 1;
  let x, y, num;
  x = y = num = 0;
  x--;
  
  while(1) {
    for (let i = 0; i < length; i++) {
      x += direction;
      result[y][x] = ++num;
    }

    length--;
    if (length == 0) break;

    for (let j = 0; j < length; j++) {
      y += direction;
      result[y][x] = ++num;
    }

    direction *= -1;
  }


  return result;
}
profile
#UXUI #코린이

0개의 댓글