짱아의 개발 기록장

LeetCode : 59. Spiral Matrix II 본문

Algorithm/LeetCode

LeetCode : 59. Spiral Matrix II

jungahshin 2021. 2. 2. 22:43
반응형

C언어를 처음 배울 때 익혔던? 달팽이 알고리즘이다.ㅎㅎ

오랜만에 풀어봐서 좋았닼ㅋㅋ

근데 이 풀이 방법이 사실 for문을 4번써서 간단하게 해결하는 방법도 있지만...

편한대로 풀었다.

 

방문배열을 통해 이미 방문한 좌표인지를 확인했고 범위를 벗어나거나 이미 방문한 좌표일 경우에는 방향을 바꾸도록 했다.

그래서 오, 아래, 왼, 위, 오, 아래...이런식으로 4방향이 계속적으로 반복되는 형식으로 달팽이 알고리즘이 진행된다.

 

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
class Solution {
public:
    vector<vector<int>> generateMatrix(int n) {
        int dx[4= {010-1};
        int dy[4= {10-10};
        int map[21][21= {0, };
        int x = 0, y = 0, num = 0;
        int visited[21][21= {0, };
        int idx = 0// 방향 설정
        vector<vector<int>> ans;
        
        while(num<n*n){
            num++;
            map[x][y] = num;
            visited[x][y] = 1;
            int nx = x+dx[idx];
            int ny = y+dy[idx];
            if(0>nx || nx>=|| 0>ny || ny>=|| visited[nx][ny]){
                idx = (idx+1)%4;
                nx = x+dx[idx];
                ny = y+dy[idx];
            }
            x = nx;
            y = ny;
        }
        
        for(int i=0; i<n; i++){
            vector<int> temp;
            for(int j=0; j<n; j++){
                temp.push_back(map[i][j]);
            }
            ans.push_back(temp);
        }
        
        return ans;
    }
};
cs
반응형

'Algorithm > LeetCode' 카테고리의 다른 글

LeetCode : 73. Set Matrix Zeroes  (0) 2021.02.03
LeetCode : 57. Insert Interval  (0) 2021.02.02
LeetCode : 264. Ugly Number II  (0) 2021.01.26
LeetCode : 67. Add Binary  (0) 2021.01.24
LeetCode : 35. Search Insert Position  (0) 2021.01.23
Comments