Skip to content

Commit 35a77b4

Browse files
committed
spiral-matrix
1 parent bd021c9 commit 35a77b4

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

spiral-matrix/JANGSEYEONG.js

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
/**
2+
* @param {number[][]} matrix
3+
* @return {number[]}
4+
*/
5+
var spiralOrder = function (matrix) {
6+
let top = 0; // 상단 행 인덱스
7+
let bottom = matrix.length - 1; // 하단 행 인덱스
8+
let left = 0; // 좌측 열 인덱스
9+
let right = matrix[0].length - 1; // 우측 열 인덱스
10+
11+
const answer = [];
12+
13+
// 상단, 우측, 하단, 좌측 경계를 차례로 순회하며 값을 수집
14+
// 각 반복마다 경계가 안쪽으로 줄어듦
15+
while (top <= bottom && left <= right) {
16+
// 1. 상단 행 순회
17+
for (let col = left; col <= right; col++) {
18+
answer.push(matrix[top][col]);
19+
}
20+
top++; // 상단 경계를 아래로 한칸 이동
21+
// 상단 경계가 하단 경계를 넘어가면 중단
22+
if (top > bottom) {
23+
break;
24+
}
25+
// 2. 우측 열 순회
26+
for (let row = top; row <= bottom; row++) {
27+
answer.push(matrix[row][right]);
28+
}
29+
right--; // 우측 경계를 왼쪽으로 한칸 이동
30+
// 우측 경계가 좌측 경계를 넘어가면 중단
31+
if (left > right) {
32+
break;
33+
}
34+
// 3. 하단 행 순회
35+
for (let col = right; col >= left; col--) {
36+
answer.push(matrix[bottom][col]);
37+
}
38+
bottom--; // 하단 경계를 위쪽으로 한칸 이동
39+
40+
// 4. 좌측 열 순회
41+
for (let row = bottom; row >= top; row--) {
42+
answer.push(matrix[row][left]);
43+
}
44+
left++; // 좌측 경계를 우측으로 한칸 이동
45+
}
46+
47+
return answer;
48+
};

0 commit comments

Comments
 (0)