[SWEA] 1954. 달팽이 숫자(D2)

ERror.ASER·2021년 2월 5일
0

SW Expert Academy

목록 보기
6/11
post-thumbnail

문제 - 1954. 달팽이 숫자(D2)


풀이

import java.util.Scanner;
import java.io.FileInputStream;

class Solution
{
	public static void main(String args[]) throws Exception
	{
		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];
			
			//현재 위치
			int dx = 0;
			int dy = 0;
			
			//우,하,좌,상
			int[] x = {0,1,0,-1};
			int[] y = {1,0,-1,0};

			int idx = 0;
			
			for(int i=1; i<=n*n; i++) {
				map[dx][dy] = i;
				dx += x[idx];
				dy += y[idx];
				
				//인덱스 바꿔주기
				if(dx>=n || dy>= n ||dy<0 ||dx<0 || map[dx][dy] != 0) {//방향 바꿀 때, 
					//잘못된 애들 빼주고, 
					dx -= x[idx];
					dy -= y[idx];
					idx = (idx+1)%4;
					//새로운 방향으로 더해줌.
					dx += x[idx];
					dy += y[idx];
				}
			}
			
			System.out.println("#"+tc);
			for(int i=0; i<n;i++) {
				for(int j=0; j<n; j++) {
					System.out.print(map[i][j]+" ");
				}
				System.out.println();
			}
		}

		sc.close();
	}
}
profile
지우의 블로그

0개의 댓글