Leetcode Java Spiral Matrix II
업데이트:
문제
코드
class Solution {
public int[][] generateMatrix(int n) {
int[][] result = new int[n][n];
int min = 0;
int max = n - 1;
int num = 1;
while (num <= n * n) {
for (int idx = min; idx <= max && num <= n * n; idx++) {
result[min][idx] = num++;
}
for (int idx = min + 1; idx <= max - 1 && num <= n * n; idx++) {
result[idx][max] = num++;
}
for (int idx = max; idx >= min && num <= n * n; idx--) {
result[max][idx] = num++;
}
for (int idx = max - 1; idx >= min + 1 && num <= n * n; idx--) {
result[idx][min] = num++;
}
min++;
max--;
}
return result;
}
}
결과
설명
-
기존 풀이한 Spiral Matrix와 비슷한 문제로, $n \times n$ 배열에 순차적으로 숫자를 넣는 문제이다.
- 아래의 기본 변수들을 정의한다.
- 변수 result는 주어진 문제의 결과인 $n \times n$ 배열이다.
- 변수 min은 주어진 배열 matrix의 가로와 세로의 시작 인덱스이다.
- 변수 max는 주어진 배열 matrix의 가로와 세로의 최대 인덱스이다.
- 변수 num은 배열 내 채워질 값이다.
- 반복문을 통해 순차적으로 배열 result의 외각부터 중심까지 변수 num을 증가시키며 num이 $n \times n$의 크기가 될 때까지 넣어준다.
- 우측 -> 아래 -> 좌측 -> 위 순으로 값들을 result에 넣는다.
- 외각 한바퀴를 돌면 min은 증가시키고, max는 증가시켜 반복문을 계속한다.
- 반복이 종료되면 외각부터 숫자를 넣어 완성된 배열인 result를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기