선형 배열, 달팽이 배열에 관한 문제이다.
타 알고리즘이랑 다른점이라면 x와 y의 좌표가 서로 다르기 때문에 탈출 조건을 잘 명시해줘야하는게 포인트.
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int xSize = matrix[0].length;
int ySize = matrix.length-1;
List<Integer> answer = new ArrayList<>();
int row = 0, col = -1;
int inc = 1;
int i, j;
while (xSize > 0 || ySize >0) {
for (i = 0; i < xSize; i++) {
col += inc;
answer.add(matrix[row][col]);
}
xSize--;
if(ySize == 0) break;
for (i = 0; i < ySize; i++) {
row += inc;
answer.add(matrix[row][col]);
}
inc *= -1;
ySize--;
if (xSize == 0) break;
}
return answer;
}
}