Algorithm/SWEA
[D2]n1954_달팽이숫자
징주
2021. 8. 4. 04:10
재귀로 짜는 법도 생각해보자
https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AV5PobmqAPoDFAUq
package com.ssafy.algo.n1954_달팽이숫자;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
for(int i=0;i<t;i++) {
int n = Integer.parseInt(br.readLine());
int snail [][] = new int[n][n];
int x = 0;
int y = 0;
int cnt = 0;
int k = 1;
while(n * n > k) {
//->
for(x=cnt; x< n-1-cnt; x++) {
snail[y][x] = k;
k++;
}
//↓
for(; y<n-1-cnt; y++) {
snail[y][x] = k;
k++;
}
//<-
for(; x>cnt; x--) {
snail[y][x] = k;
k++;
}
//↑
for(; y>cnt; y--) {
snail[y][x] = k;
k++;
}
cnt++;
y++; //한바퀴를 다 돌았을때는 y축이 증가되어야한다.
}
//홀수일때 가운데
if(k == n*n) {
x = n/2;
y = n/2;
snail[y][x] = k;
}
bw.append("#" + (i+1) +"\n");
for(int []f : snail) {
for(int r : f ) {
bw.append(r+" ");
}
bw.append("\n");
}
}
bw.flush();
bw.close();
}
}