반응형
https://leetcode.com/problems/spiral-matrix/
1. 2022.03.31 시도
소요시간: 11분
class Solution {
private String[] d = new String[]{"RIGHT", "DOWN", "LEFT", "UP"};
public List<Integer> spiralOrder(int[][] matrix) {
int rowSize = matrix.length;
int colSize = matrix[0].length;
int p = 0;
int q = -1;
List<Integer> ret = new ArrayList<>();
int directionIndex = 0;
while ( rowSize !=0 && colSize != 0) {
String direction = d[directionIndex];
switch(direction) {
case "RIGHT":
for (int i=0; i<colSize; i++) {
ret.add(matrix[p][++q]);
}
rowSize--;
break;
case "DOWN":
for (int i=0; i<rowSize; i++) {
ret.add(matrix[++p][q]);
}
colSize--;
break;
case "LEFT":
for (int i=0; i<colSize; i++) {
ret.add(matrix[p][--q]);
}
rowSize--;
break;
case "UP":
for (int i=0; i<rowSize; i++) {
ret.add(matrix[--p][q]);
}
colSize--;
break;
}
directionIndex = (directionIndex+1)%4;
}
return ret;
}
}
풀이 접근 과정
방향과 크기에 대해 생각했다. 방향은 순서대로 변화하고 크기도 일정크기만큼 줄어든다.
시작을 matrix밖에서 시작하기 때문에 q값을 -1부터 시작한다.
느낀점
- medium 보고 살짝 긴장했는데 생가한대로 풀어서 한번에 정답 나오니 짜릿하다.
알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)
반응형
'알고리즘 풀이' 카테고리의 다른 글
.leetcode(885. Spiral Matrix III) (0) | 2022.03.31 |
---|---|
.leetcode(59. Spiral Matrix II) (0) | 2022.03.31 |
.leetcode(917. Reverse Only Letters) (0) | 2022.03.30 |
.leetcode(404. Sum of Left Leaves) (0) | 2022.03.30 |
.leetcode(852. Peak Index in a Mountain Array) (0) | 2022.03.29 |