문제 난이도 : Easy
문제 유형 : Data Structures - Array
문제 설명 간략 :
m x n matrix가 주어지고 spiral 순서로 출력하라.
제약사항
- m == mat.length
- n == mat[i].length
- 1 <= m, n <= 10
- -100 <= matrix[i][j] <= 10
자바 풀이
class Solution {
public List<Integer> spiralOrder(int[][] matrix) {
int width = matrix[0].length;
int height = matrix.length;
List<Integer> result = new ArrayList<Integer>();
//right -> down -> left -> up
String direction = "right";
int idx = -1;
int x = -1;
int y = 0;
int [][] check = new int[height][width];
while(idx < width*height-1) {
if(direction.equals("right")) {
x++;
if(x == width || check[y][x] == 1) {
direction = "down";
x--;
continue;
}
}else if(direction.equals("down")) {
y++;
if(y == height || check[y][x] == 1) {
direction = "left";
y--;
continue;
}
}else if(direction.equals("left")) {
x--;
if(x == -1 || check[y][x] == 1) {
direction = "up";
x++;
continue;
}
}else if(direction.equals("up")) {
y--;
if(y == -1 || check[y][x] == 1) {
direction = "right";
y++;
continue;
}
}
idx++;
result.add(matrix[y][x]);
check[y][x] = 1;
}
return result;
}
}
출처