728x90
반응형
풀이 :
dx, dy를 우,하,좌,상 순으로 만들고, map[N][N]을 만들어서 다 0으로 초기화. dir을 사용해서 배열 범위를 벗어나거나 뒤의 배열이 0이 아니면 방향 전환
Code
public class Solution1954 {
static int[] dx = { 0, 1, 0, -1 }; // 우 하 좌 상 순서
static int[] dy = { 1, 0, -1, 0 };
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int T = sc.nextInt(); // 테스트 케이스 개수
for (int tc = 1; tc <= T; tc++) {
int N = sc.nextInt();
int[][] map = new int[N][N]; // n*n 배열 생성 -> 다 0으로 초기화
int dir = 0; // 현재 방향 인덱스
int x = 0, y = 0; // 시작 좌표
for (int i = 1; i <= N * N; i++) { // 1부터 N*N까지 숫자를 배열에 넣기
map[x][y] = i;
if (x + dx[dir] >= N || x + dx[dir] < 0 || y + dy[dir] >= N || y + dy[dir] < 0
|| map[x + dx[dir]][y + dy[dir]] != 0) {
// N * N 배열 범위 안에 있는지, 배열을 벗어나는지 //그 자리에 숫자가 잘 입력 되었는지 확인
dir = (dir + 1) % 4; // 방향 전환 -> 0,1,2,3을 반복
}
x += dx[dir];
y += dy[dir];
}
System.out.println("#" + tc);
for (int i = 0; i < N; i++) {
for (int n : map[i])
System.out.print(n + " ");
System.out.println();
}
}
}
}
728x90
반응형
'SWEA' 카테고리의 다른 글
swea 1961 [D2] 숫자 배열 회전 JAVA (0) | 2023.11.20 |
---|---|
swea 1959 [D2] 두 개의 숫자열 JAVA (1) | 2023.11.20 |
swea 1948 [D2] 날짜 계산기 JAVA (0) | 2023.11.20 |
swea 1946 [D2] 간단한 압축 풀기 JAVA (0) | 2023.11.20 |
swea 1945 [D2] 간단한 소인수분해 JAVA (0) | 2023.11.20 |