[알고리즘/SWEA] #1954 달팽이 숫자

JudyLia·2022년 2월 4일
0

알고리즘

목록 보기
18/61
post-thumbnail

문제)
달팽이 숫자

  • java
package algorithm_lab.day01.hw1;

import java.util.Scanner;

public class Solution {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int T = sc.nextInt();
		for(int t = 1; t <= T; t++) {
			int N = sc.nextInt();
			int arr[][] = new int[N][N];
			int dx[] = {0, 1, 0, -1}, dy[] = {1, 0, -1, 0}, dd[] = {0, 1, 2, 3};
			int n = 1, x = 0, y = 0, d = 0; // 디폴트 방향은 오른쪽(우 하 좌 상 순서)
			while(n <= N * N) {
				int X = x + dx[dd[d]], Y = y + dy[dd[d]];
				if(X < 0 || X >= N || Y < 0 || Y >= N || arr[X][Y] != 0) { // 꺾여야 하는 순간이 오면
					d = (d + 1) % 4; // 방향 바뀜
					X = x + dx[dd[d]]; Y = y + dy[dd[d]];
				}
				arr[x][y] = n++;
				x = X; y = Y;
			}
			System.out.println("#" + t);
			for(int i = 0; i < N; i++) {
				for(int j = 0; j < N; j++) System.out.print(arr[i][j] + " ");
				System.out.println();
			}
		}
	}
}
profile
안녕:)

0개의 댓글

관련 채용 정보