Skip to content

Commit 9d0ba97

Browse files
authored
[ PS ] : Spiral Matrix
1 parent adcc891 commit 9d0ba97

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

spiral-matrix/uraflower.js

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/**
2+
* 주어진 행렬을 나선형(우-하-좌-상)으로 순회한 결과를 반환하는 함수
3+
* @param {number[][]} matrix
4+
* @return {number[]}
5+
*/
6+
const spiralOrder = function (matrix) {
7+
const rows = matrix.length;
8+
const cols = matrix[0].length;
9+
let r = 0;
10+
let c = 0;
11+
let dr = 0; // 0, 1, 0, -1
12+
let dc = 1; // 1, 0, -1, 0
13+
14+
const output = [];
15+
16+
for (let i = 0; i < rows * cols; i++) {
17+
output.push(matrix[r][c]);
18+
matrix[r][c] = null;
19+
20+
// 방향을 전환해야 하는 경우
21+
if (!(0 <= r + dr && r + dr < rows && 0 <= c + dc && c + dc < cols) || matrix[r + dr][c + dc] === null) {
22+
[dr, dc] = [dc, -dr];
23+
}
24+
25+
r += dr;
26+
c += dc;
27+
}
28+
29+
return output;
30+
};
31+
32+
// 시간복잡도: O(r * c)
33+
// 공간복잡도: O(1)

0 commit comments

Comments
 (0)