문제
풀이
class Solution {
public int[][] solution(int n) {
int[][] result = new int[n][n];
int num = 1;
int top = 0;
int bottom = n - 1;
int left = 0;
int right = n - 1;
while(num <= n * n) {
for(int i = left; i <= right; i++) {
result[top][i] = num++;
}
top++;
for(int i = top; i <= bottom; i++) {
result[i][right] = num++;
}
right--;
for(int i = right; i >= left; i--) {
result[bottom][i] = num++;
}
bottom--;
for(int i = bottom; i >= top; i--) {
result[i][left] = num++;
}
left++;
}
return result;
}
}
class Solution {
public int[][] solution(int n) {
int[][] answer = new int[n][n];
int num = 1;
int x = 0, y = 0;
int dx[] = {0, 1, 0, -1};
int dy[] = {1, 0, -1, 0};
int direction = 0;
while (num <= n * n) {
answer[x][y] = num++;
int nx = x + dx[direction];
int ny = y + dy[direction];
if (nx < 0 || nx >= n || ny < 0 || ny >= n || answer[nx][ny] != 0) {
direction = (direction + 1) % 4; // 범위 밖에 나갔을 때 방향전환
nx = x + dx[direction];
ny = y + dy[direction];
}
x = nx;
y = ny;
}
return answer;
}
}
출처
https://school.programmers.co.kr/learn/courses/30/lessons/181832
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] Lv.0 / 정사각형으로 만들기 / Java (0) | 2024.03.14 |
---|---|
[Programmers] Lv.0 / 특별한 이차원 배열 2 / Java (0) | 2024.03.14 |
[Programmers] Lv.0 / 특별한 이차원 배열 1 / Java (0) | 2024.03.13 |
[Programmers] Lv.0 / l로 만들기 / Java (0) | 2024.03.13 |
[Programmers] Lv.0 / 조건에 맞게 수열 변환하기 3 / Java (0) | 2024.03.12 |
댓글