728x90
※ SW Expert 아카데미의 문제를 무단 복제하는 것을 금지합니다.
728x90
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class Solution {
static int[][] arr;
static int N;
private static void snail(int x, int y, int d, int count) {
// 동, 남, 서, 북
int[] dx = {0, 1, 0, -1};
int[] dy = {1, 0, -1, 0};
arr[x][y] = count;
if(count == N * N) return;
int nx = x + dx[d];
int ny = y + dy[d];
if(nx >= 0 && nx < N && ny >= 0 && ny < N && arr[nx][ny] == 0) {
snail(nx, ny, d, count + 1);
}
// 인덱스를 벗어나거나, 이미 수가 저장되어 있다면 방향을 바꾼다.
else {
d++;
if(d > 3) d %= 4;
snail(x, y, d, count);
}
}
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
// 테스트 케이스 입력
int T = Integer.parseInt(br.readLine());
for (int test_case = 1; test_case < T + 1; test_case++) {
sb.append("#" + test_case + "\n");
// N 입력
N = Integer.parseInt(br.readLine());
// N * N 배열
arr = new int[N][N];
// 배열 채우기
snail(0, 0, 0, 1);
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
sb.append(arr[i][j]);
if(j != N - 1) sb.append(" ");
else sb.append("\n");
}
}
}
System.out.println(sb);
}
}
728x90
'Problem Solving > SWEA' 카테고리의 다른 글
[SW Expert Academy, SWEA 2001] 파리 퇴치 (java) (0) | 2023.02.12 |
---|---|
[SW Expert Academy, SWEA 10726] 이진수 표현 (java) (0) | 2023.02.12 |
[SW Expert Academy, SWEA 1210] [S/W 문제해결 기본] 2일차 - Ladder1 (java) (0) | 2023.02.08 |
[SW Expert Academy, SWEA 1208] [S/W 문제해결 기본] 1일차 - Flatten (java) (0) | 2023.02.08 |
[SW Expert Academy, SWEA 1288] 새로운 불면증 치료법 (java) (0) | 2023.02.06 |