반응형
import java.util.Scanner;
public class snailQuiz {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int N = sc.nextInt();
int[][] snailArray = new int[N][N];
int[] dx = { 0, 1, 0, -1 };
int[] dy = { 1, 0, -1, 0 }; //우,하,좌,상
int d = 0; // 회전인덱스
// 좌표
int xIndex = 0;
int yIndex = 0;
for (int i = 1; i <= N*N ; i++) {
snailArray[xIndex][yIndex] = i;
int nx = xIndex + dx[d];
int ny = yIndex + dy[d];
if (nx < 0 || nx >= N || ny < 0 || ny >= N || snailArray[nx][ny] != 0){
d = (d + 1) % 4; //방향바꿈
nx = xIndex + dx[d];
ny = yIndex + dy[d];
}
xIndex = nx;
yIndex = ny;
}
System.out.printf("#%d\n",test_case);
for (int r = 0; r < N; r++) {
for (int c = 0; c < N; c++)
System.out.print(snailArray[r][c] + " ");
System.out.println();
}
}
}
}
방향에 대한 방향성을 조금더 잘 생각해야되는 부분이었다.
1. 반복되는 구조 확인하기
2. 배열일 경우 배열의 dx dy로 방향으로 하여 문제푸는 방법 찾기
반응형
'알고리즘' 카테고리의 다른 글
[SWEA][D2] 1946. 간단한 압축 풀기 Java (0) | 2025.06.03 |
---|---|
[SWEA][D2] 1948. 날짜 계산기 Java (0) | 2025.06.03 |
[SWEA][D2] 1959. 두 개의 숫자열 Java (0) | 2025.06.03 |
[SWEA][D2] 1989. 초심자의 회문 검사 Java (0) | 2025.06.02 |
[SWEA][D2] 1961. 숫자 배열 회전 Java (0) | 2025.06.02 |