Problem From.
https://leetcode.com/problems/spiral-matrix/
오늘 문제는 matrix 가 주어질때, 그 매트릭스를 시계방향으로 순회하면서 안에있는 원소들을 반환하는 문제였다.
먼저 rowMin, rowMax, colMin, colMax 값들을 선언해두고, 각각의 경우에 따라 순차적으로 탐색할 수 있도록 하였다.
colMin ~ colMax 까지 순회하고 rowMin 를 다 보았으니 rowMin 을 하나 더해주고,
rowMin ~ rowMax 까지 순회하고 colMax 를 다 보았으니 colMax 를 하나 빼주는 식으로 반복하여서 답을 구할 수 있었다.
class Solution {
fun spiralOrder(matrix: Array<IntArray>): List<Int> {
val answer = arrayListOf<Int>()
var rowMin = 0
var rowMax = matrix.size - 1
var colMin = 0
var colMax = matrix[0].size - 1
while(rowMin <= rowMax && colMin <= colMax) {
for(i in colMin..colMax) {
answer.add(matrix[colMin][i])
}
rowMin += 1
for(i in rowMin..rowMax) {
answer.add(matrix[i][colMax])
}
colMax -= 1
if(rowMin <= rowMax) {
for(i in colMax downTo colMin) {
answer.add(matrix[rowMax][i])
}
rowMax -= 1
}
if(colMin <= colMax) {
for(i in rowMax downTo rowMin) {
answer.add(matrix[i][colMin])
}
colMin += 1
}
}
return answer.toList()
}
}