코딩테스트/LeetCode
[LeetCode]54. Spiral Matrix
개발냐옹발
2022. 11. 4. 12:20
https://leetcode.com/problems/spiral-matrix/?envType=study-plan&id=level-2
Spiral Matrix - LeetCode
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com
-> 아래와 같은 2차원 배열을 나선형으로 돌면서 List 배열에 담는 문제이다.
이 문제를 풀기 위해선
1. 2차원 배열의 row, col 이 0이 아닌지 확인!
2. 2차원 배열의 원소 사이즈를 알아 내어, list에 담아 사이즈를 비교한다 (while문)
3. 상/하/좌/우 파트가 끝날때 마다 list 사이즈 확인하기
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
List<Integer> answer = new ArrayList<>();
int top = 0;
int bottom = matrix.length-1;
int left = 0;
int right = matrix[0].length-1;
if(right < 0){
for(int i = 0; i <= bottom; i++) answer.add(matrix[i][0]);
return answer;
}
if(bottom < 0){
for(int i = 0; i <= right; i++) answer.add(matrix[0][i]);
return answer;
}
int size = matrix[0].length * matrix.length;
while(answer.size() < size){
for(int i = left; i <= right; i++){
answer.add(matrix[top][i]);
}
top+= 1;
if(answer.size() == size) break;
for(int i = top; i <= bottom; i++){
answer.add(matrix[i][right]);
}
right-=1;
if(answer.size() == size) break;
for(int i = right; i>= left; i--){
answer.add(matrix[bottom][i]);
}
bottom-=1;
if(answer.size() == size) break;
for(int i = bottom; i >= top; i--){
answer.add(matrix[i][left]);
}
left+=1;
}
return answer;
}
}