Notice
Recent Posts
Recent Comments
Link
투케이2K
16. (TWOK/ALGORITHM) [Java] for문 사용해서 달팽이 모양 배열 순차적으로 데이터 삽입 실시 본문
[환경 설정 및 설명]
언 어 : Java
설 명 : for문 사용해서 달팽이 모양 배열 순차적으로 데이터 삽입 실시
[소스 코드]
package ex5;
public class MainActivity11 {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println("[for문 사용해서 달팽이 모양 배열 순차적으로 데이터 삽입 실시 - 세부 설명 포함]");
/*[설 명]
* 1. 5행5열 번지값 (0,0) (0,1) (0,2) (0,3) (0,4)
* (1,0) (1,1) (1,2) (1,3) (1,4)
* (2,0) (2,1) (2,2) (2,3) (2,4)
* (3,0) (3,1) (3,2) (3,3) (3,4)
* (4,0) (4,1) (4,2) (4,3) (4,4)
*
* 2. 로직 : 1 2 3 4 5 => 17 18 19 => 25
* 16 6 24 20
* 15 7 23 22 21
* 14 8
* 13 12 11 10 9
*
* */
int n;//달팽이의 차수 지정 변수
int row; //행(가로) 지정 변수
int col; //열(세로) 지정 변수
int k=0; //달팽이 안쪽으로 들어갈 수록 감소되는 행,열 만큼 깍아줄 변수
int arr[][]= new int [5][5];//달팽이 배열
int value =1;//달팽이 배열에 넣을 숫자
//달팽에 차수에 따라 몇번 반복할지 : (1회전 : 5) > (2회전 : 3) > (3회전 : 1) 데이터 삽입 순서
for(n=5; n>0; n-=2){
//top 부분 데이터 삽입 실시 (초기 k 변수값 0)
for(col=0; col<n; col++){
arr[k][k+col] = value;
value ++;
/* 1회전 : (0,0) (0,1) (0,2) (0,3) (0,4)
* 세부 설명 : arr[0][0+0] arr[0][0+1] ... arr[0][0+4]
* */
}
//right 부분 데이터 삽입 실시
for(row=1; row<n; row++){ //TODO 여기에서 1회전 시 row 변수값 5삽입됩니다
arr[k+row][5-k-1] = value;
value ++;
/* 1회전 : (1,4) (2,4) (3,4) (4,4)
* 세부 설명 : arr[0+1][5-0-1] arr[0+2][5-0-1] ... arr[0+4][5-0-1]
* */
}
//bottom 부분 데이터 삽입 실시
for(col=1; col<n; col++){
arr[k+row-1][5-k-col-1] = value;
value ++;
/* 1회전 : (4,4) (4,3) (4,2) (4,1) (4,0)
* 세부 설명 : arr[0+5-1][5-0-1-1] ... arr[0+5-1][5-0-4-1]
* */
}
//left 부분 데이터 삽입 실시
for(col=1; col<n-1; col++){
arr[5-k-col-1][k] = value;
value ++;
/* 1회전 : (3,0) (2,0) (1,0)
* 세부 설명 : arr[5-0-1-1][0] arr[5-0-2-1][0] arr[5-0-3-1][0]
* */
}
k++; //k변수값을 증가시킨다 (2회전 수행시 top 부분 행(가로)번지 값을 1부터 시작하기 위함)
}
//삽입된 데이터 출력 실시
for(row=0; row<5; row++){
for(col=0; col<5; col++){
System.out.printf("%3d",arr[row][col]);
}
System.out.println(""); //한개 행을 출력하고 줄바꿈 의미
}
}//메인 종료
}//클래스 종료
[참고 사이트]
반응형
'투케이2K 알고리즘' 카테고리의 다른 글
Comments