package javalesson.com.javalesson.ch01test;
public class T01Snail {
public static void main(String[] args){
int n;//달팽이의 차수
int row,col;//행 열
int k=0;//달팽이 안쪽으로 들어갈 수록 감소되는 행,열 만큼 깍아줄 변수
int snail[][]= new int [5][5];//달팽이 배열
int i =1;//달팽이 배열에 넣을 숫자
for(n=5; n>0;n-=2){//달팽에 차수에 따라 몇번 반복할지
for(col=0;col<n;col++){
snail[k][k+col]=i;
i++;
}
for(row=1;row<n;row++){
snail[k+row][5-k-1]=i;
i++;
}
for(col=1;col<n;col++){
snail[k+row-1][5-k-col-1]=i;
i++;
}
for(col=1;col<n-1;col++){
snail[5-k-col-1][k]=i;
i++;
}
k++;
}
//출력
for(row=0;row<5;row++){
for(col=0;col<5;col++){
System.out.printf("%3d",snail[row][col]);
}
System.out.println("");
}
}
}
package jungbo;
import java.util.InputMismatchException;
import java.util.Scanner;
public class T12Snail {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int deg;
while(true){
System.out.print("달팽이의 차수를 입력하세요 : ");
try{
deg = scan.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("숫자만 입력해야 합니다.");
}
}
scan.close();
int n;
int row,col;
int k=0;
int snail[][]= new int[deg][deg];
int i =1;
for(n=deg; n>0;n-=2){
for(col=0;col<n;col++){
snail[k][k+col]=i;
i++;
}
for(row=1;row<n;row++){
snail[k+row][deg-k-1]=i;
i++;
}
for(col=1;col<n;col++){
snail[k+row-1][deg-k-col-1]=i;
i++;
}
for(col=1;col<n-1;col++){
snail[deg-k-col-1][k]=i;
i++;
}
k++;
}
//출력
for(row=0;row<deg;row++){
for(col=0;col<deg;col++){
System.out.printf("%3d",snail[row][col]);
}
System.out.println();
}
}
}
스위치(sw)변수를 사용하여 로직을 간략화 해보자
package jungbo;
import java.util.InputMismatchException;
import java.util.Scanner;
public class T12Snail {
public static void main(String[] args){
Scanner scan = new Scanner(System.in);
int deg;
while(true){
System.out.print("달팽이의 차수를 입력하세요 : ");
try{
deg = scan.nextInt();
break;
}catch(InputMismatchException e){
System.out.println("숫자만 입력해야 합니다.");
}
}
scan.close();
int print = deg;
int row=0,col=-1;
int sw=1;
int snail[][]= new int[deg][deg];
int i =1;
while(true){
for(int cnt=0;cnt<deg;cnt++){
col=col+sw;
snail[row][col]=i++;
}
deg=deg-1;
if(deg==0)
break;
for(int cnt=0;cnt<deg;cnt++){
row=row+sw;
snail[row][col]=i++;
}
sw=sw*(-1);
}
//출력
for(row=0;row<print;row++){
for(col=0;col<print;col++){
System.out.printf("%3d",snail[row][col]);
}
System.out.println();
}
}
}
'JAVA > 알고리즘 예제' 카테고리의 다른 글
[JAVA] 선택 정렬(Selection Sort) (1) | 2016.08.31 |
---|---|
[JAVA] 마방진 (1) | 2016.08.31 |
[JAVA] 모래시계 찍기 (1) | 2016.08.30 |
[JAVA] 다이아몬드 찍기 (1) | 2016.08.30 |
[JAVA] 5x5 사각형(1~25) (3) | 2016.08.29 |