정수를 나선형으로 배치하기
https://school.programmers.co.kr/learn/courses/30/lessons/181832
📔 문제 설명
양의 정수 n이 매개변수로 주어집니다. n × n 배열에 1부터 n2 까지 정수를 인덱스 [0][0]부터 시계방향 나선형으로 배치한 이차원 배열을 return 하는 solution 함수를 작성해 주세요.
💡 입출력 예
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
function solution(n) {
let x = 0;
let y = 0;
let number = 1;
var answer = Array.from(Array(n), () => Array(n).fill(0));
for (let i = n; i > 0; i -= 2) {
for (let j = 0; j < i; j++) {
console.log("오른쪽", `[${y}][${x}] = ${number}`);
answer[y][x] = number;
number++;
x++;
}
x--;
y++;
for (let j = 0; j < i - 1; j++) {
console.log("아래", `[${y}][${x}] = ${number}`);
answer[y][x] = number;
number++;
y++;
}
x--;
y--;
for (let j = 0; j < i - 1; j++) {
console.log("왼쪽", `[${y}][${x}] = ${number}`);
answer[y][x] = number;
number++;
x--;
}
x++;
y--;
for (let j = 0; j < i - 2; j++) {
console.log("위", `[${y}][${x}] = ${number}`);
answer[y][x] = number;
number++;
y--;
}
x++;
y++;
}
return answer;
}
코드 진행
구분 | 반복1 | 반복2 |
---|---|---|
1.오른쪽으로 이동 (x++) | [0][0] = 1 [0][1] = 2 [0][2] = 3 [0][3] = 4 y = 4; x = 0; | [1][1] = 13 [1][2] = 14 y = 1; x = 3; |
x,y 위치 변경 | y++; x–; | y++; x–; |
2.아래로 이동 (y++) | [1][3] = 5 [2][3] = 6 [3][3] = 7 y = 4; x = 3; | [2][2] = 15 y = 3; x = 2; |
x,y 위치 변경 | x–; y–; | x–; y–; |
3.왼쪽으로이동 (x–) | [3][2] = 8 [3][1] = 9 [3][0] = 10 y = 3; x = -1; | [2][1] = 16 |
x,y 위치 변경 | x++; y–; | x++; y–; |
4.위로 이동 (y–) | [2][0] = 11 [1][0] = 12 y = 0; x = 0; | |
x,y 위치 변경 | x++; y++; |
This post is licensed under CC BY 4.0 by the author.