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
- 보석쇼핑
- 카카오
- Algorithm
- BFS
- 카카오인턴
- 스마일게이트
- LIS #Algorithm #요소추적
- 코테
- 유니온파인드
- IBK기업은행 #기업은행 #디지털 #직무 #정리
- 식단
- 소감
- 투포인터
- BaekJoon
- 백준
- c++
- 서버개발캠프
- 코딩테스트
- Smilegate
- Union-find
- 중반부
- 삼성 #코테 #2020상반기 #c++
- 알고리즘
- 1편
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