1954 달팽이 숫자 문제 링크
문제분석
- 1부터 N*N까지의 숫자가 시계방향으로 이루어짐
- 정수 N을 입력 받아 N크기의 달팽이 출력
제약 사항
입력 조건
- 첫째 줄 : 테스트 케이스 수 ( T <= 10 )
- 둘째 줄 : N(1 ≤ N ≤ 10)
출력 조건
- #부호 + 테스트 케이스 번호 + "\n"
- 달팽이 숫자 출력
#1
- 재귀를 활용하여 달팽이 모양 그대로 들어가며 숫자 출력
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;
T=sc.nextInt();
for(int test_case = 1; test_case <= T; test_case++)
{
int N = sc.nextInt();
int[][] snail = new int[N][N];
snail = draw(snail, 0, N, 0);
System.out.println("#"+ test_case);
for(int i=0; i<N; i++) {
for(int j=0; j<N; j++) {
System.out.print(snail[i][j] + " ");
}
System.out.println();
}
}
}
static int[][] draw(int[][] snail, int i, int N, int number) {
if (N/2.0 <= i) return snail;
for(int x=i; x<N-i; x++) {
snail[i][x] = ++number;
}
for(int x=i+1; x<N-i; x++) {
snail[x][N-1-i] = ++number;
}
for(int x=N-2-i; x>=i; x--) {
snail[N-1-i][x] = ++number;
}
for(int x=N-2-i; x>=1+i; x--){
snail[x][i] = ++number;
}
return draw(snail, ++i, N, number);
}
}
