😈 정수를 나선형으로 배치하기
📗 문제 설명
양의 정수 n
이 매개변수로 주어집니다. n
× n
배열에 1부터 n
2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
👀 제한사항
- 1 ≤
n
≤ 30
📃 입출력 예
n | result |
---|---|
4 | [[1, 2, 3, 4], [12, 13, 14, 5], [11, 16, 15, 6], [10, 9, 8, 7]] |
5 | [[1, 2, 3, 4, 5], [16, 17, 18, 19, 6], [15, 24, 25, 20, 7], [14, 23, 22, 21, 8], [13, 12, 11, 10, 9]] |
💬입출력 예 설명
입출력 예 설명 #1
- 예제 1번의
n
의 값은 4로 4 × 4 배열에 다음과 같이 1부터 16까지 숫자를 채울 수 있습니다.행 \ 열 0 1 2 3 0 1 2 3 4 1 12 13 14 5 2 11 16 15 6 3 10 9 8 7
입출력 예 설명 #2
- 예제 2번의
n
의 값은 5로 5 × 5 배열에 다음과 같이 1부터 25까지 숫자를 채울 수 있습니다.행 \ 열 0 1 2 3 4 0 1 2 3 4 5 1 16 17 18 19 6 2 15 24 25 20 7 3 14 23 22 21 8 4 13 12 11 10 9
💎나의 풀이
function solution(n) {
var result = [];
for (var i = 0; i < n; i++) {
result.push([]);
}
var num = 1;
var direction = 'right';
var row = 0;
var col = 0;
while (num <= n * n) {
result[row][col] = num;
num++;
// 오른쪽 방향
if (direction === 'right') {
if (col + 1 < n && result[row][col + 1] === undefined) {
col++;
} else {
direction = 'down';
row++;
}
}
// 아래쪽 방향
else if (direction === 'down') {
if (row + 1 < n && result[row + 1][col] === undefined) {
row++;
} else {
direction = 'left';
col--;
}
}
// 왼쪽 방향
else if (direction === 'left') {
if (col - 1 >= 0 && result[row][col - 1] === undefined) {
col--;
} else {
direction = 'up';
row--;
}
}
// 위쪽 방향
else if (direction === 'up') {
if (row - 1 >= 0 && result[row - 1][col] === undefined) {
row--;
} else {
direction = 'right';
col++;
}
}
}
return result;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 😈] JavaScript 코드 처리하기 (0) | 2023.10.14 |
---|---|
[프로그래머스 😈] JavaScript 주사위 게임 3 (0) | 2023.10.14 |
[프로그래머스 😈] JavaScript 세균 증식 (0) | 2023.10.14 |
[프로그래머스 😈] JavaScript 수 조작하기1 (0) | 2023.10.14 |
[프로그래머스 😈] JavaScript 짝수는 싫어요 (1) | 2023.10.13 |