반응형
https://leetcode.com/problems/spiral-matrix-ii/
좌측상단에서 시작하여 나선형으로 회전하며 숫자를 채워주었습니다.
방향이 좌에서 상으로 회전될 때는 가로의 깊이를,
방향이 상에서 우로 회전될 때는 세로의 깊이를 하나씩 올려주며, 회전해야할 위치를 감지해주었습니다.
class Solution {
public:
int dx[4] = {0,1,0,-1};
int dy[4] = {1,0,-1,0};
vector<vector<int>> generateMatrix(int n) {
vector<vector<int>> matrix(n, vector<int>(n));
int x = 0, y = 0, d = 0, val = 1, wDepth = 0, hDepth = 0;
while(val <= n * n) {
matrix[x][y] = val++;
int nx = x + dx[d];
int ny = y + dy[d];
if(nx < wDepth || ny < hDepth || nx >= n - wDepth || ny >= n - hDepth) {
d = (d + 1) % 4;
nx = x + dx[d];
ny = y + dy[d];
wDepth += d == 3;
hDepth += d == 0;
}
x = nx;
y = ny;
}
return matrix;
}
};
반응형
'Algorithm' 카테고리의 다른 글
LeetCode 538 : Convert BST to Greater Tree (0) | 2022.04.16 |
---|---|
LeetCode 700 : Search in a Binary Search Tree (0) | 2022.04.14 |
LeetCode 289 : Game of Life (0) | 2022.04.12 |
LeetCode 682 : Baseball Game (0) | 2022.04.10 |
LeetCode 37 : Sudoku Solver (0) | 2022.04.09 |