Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 백준
- 카카오인턴
- 알고리즘
- 중반부
- 카카오
- 스마일게이트
- 소감
- LIS #Algorithm #요소추적
- Algorithm
- 1편
- 서버개발캠프
- 보석쇼핑
- 코딩테스트
- 유니온파인드
- c++
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- Smilegate
- BFS
- 삼성 #코테 #2020상반기 #c++
- 식단
- BaekJoon
- 코테
- Union-find
- 투포인터
Archives
- Today
- Total
짱아의 개발 기록장
LeetCode : 59. Spiral Matrix II 본문
반응형
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] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
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>=n || 0>ny || ny>=n || 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