JAVASCRIPT/코딩테스트

[프로그래머스] 0단계 - 정수를 나선형으로 배치하기

예글 2024. 1. 15. 21:28

1. 문제 설명

 

2. 풀이

function solution(n) {
  const result = Array.from(Array(n), () => Array(n).fill(0)); // n x n 배열 생성
  
  let num = 1; // 시작 숫자
  let row = 0; // 행의 시작 인덱스
  let col = 0; // 열의 시작 인덱스

  for (let i = n; i > 0; i -= 2) {
    // 오른쪽으로 이동
    for (let j = 0; j < i; j++) {
      result[row][col] = num++;
      col++;
    }
    col--;
    row++;
    
    // 아래로 이동
    for (let j = 0; j < i - 1; j++) {
      result[row][col] = num++;
      row++;
    }
    row--;
    col--;
    
    // 왼쪽으로 이동
    for (let j = 0; j < i - 1; j++) {
      result[row][col] = num++;
      col--;
    }
    col++;
    row--;
    
    // 위로 이동
    for (let j = 0; j < i - 2; j++) {
      result[row][col] = num++;
      row--;
    }
    row++;
    col++;
  }
  
  return result;
}

 

- 문제 이해는 완료.. 근데 어떻게 접근해야할지 감도 안 잡혀서 다른 분이 올려주신 코드 중에 제일 이해가 잘 가는 코드를 학습,,

- 너무 어려워,, 이게 왜 0단계야 🥲

 

- 참고한 블로그

https://hihiha2.tistory.com/112

 

프로그래머스 정수를 나선형으로 배치하기 JS ( Array(), Array.from(), 중첩for문, n x n 2차원배열만들기

문제 설명 양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요. ✅ 코

hihiha2.tistory.com