[swexpert] 1954. 달팽이 숫자 (java, D2)
728x90
반응형
n이 4이면 4의 제곱인 16까지 증가시키며 써주면 된다.
이동 방향을 보면 x값 증가, y 값 증가, x 값 감소, y값 감소 순으로 이동한다.
dr, dc에 위의 순서에 해당하게 써준다. cur는 방향을 바꿀 때마다 1씩 증가한다.
cur를 4로 나눠주면 순환되는 이동 방향에 따라 증가 혹은 감소시키는 값이 나오게 된다.
계속 진행하다가 num이 n*n 보다 커지면 끝내준다.
import java.util.Scanner;
public class Solution {
static int dr[]= {1,0,-1,0};
static int dc[]= {0,1,0,-1};
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int t=sc.nextInt();
for (int i = 0; i <t; i++) {
System.out.println("#"+(i+1));
int n=sc.nextInt();
int num=1;
int arr[][]=new int[n][n];
int x=0;
int y=0;
arr[y][x]=num++;
int cur=0; // 진행 방향 0, 1, 2, 3, ... 증가
while(true) {
if(num>n*n)break;
int dy=y+dc[cur%4];
int dx=x+dr[cur%4];
if(dy<0 || dy>=n || dx<0 || dx>=n || arr[dy][dx]!=0) {
cur+=1;
continue;
}
arr[dy][dx]=num++;
y=dy;
x=dx;
}
for (int j = 0; j < n; j++) {
for (int j2 = 0; j2 < n; j2++) {
System.out.print(arr[j][j2]+" ");
}
System.out.println();
}
}
sc.close();
}
}
728x90
반응형
'swexpert' 카테고리의 다른 글
[swexpert] 1284. 수도 요금 경쟁 (java, D2) (0) | 2021.01.19 |
---|---|
[swexpert] 1928. Base 64 Decoder (D2, java) (0) | 2021.01.18 |
[swexpert] 2019. 더블더블 (java, D1) (0) | 2021.01.15 |
[swexpert] 2029. 몫과 나머지 출력하기 (D1 , java) (0) | 2021.01.14 |
[swexpert] 2050. 알파벳을 숫자로 (java) (0) | 2021.01.14 |
TAGS.