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;
}
}
'코딩테스트 > LeetCode' 카테고리의 다른 글
[LeetCode]438. Find All Anagrams in a String (0) | 2022.11.07 |
---|---|
[LeetCode]153. Find Minimum in Rotated Sorted Array (0) | 2022.11.07 |
[LeetCode]202. Happy Number (0) | 2022.11.03 |
[LeetCode]74. Search a 2D Matrix (0) | 2022.11.03 |
[LeetCode]34. Find First and Last Position of Element in Sorted Array (0) | 2022.11.02 |