투케이2K

16. (TWOK/ALGORITHM) [Java] for문 사용해서 달팽이 모양 배열 순차적으로 데이터 삽입 실시 본문

투케이2K 알고리즘

16. (TWOK/ALGORITHM) [Java] for문 사용해서 달팽이 모양 배열 순차적으로 데이터 삽입 실시

투케이2K 2022. 7. 13. 17:57

[환경 설정 및 설명]

언 어 : 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(""); //한개 행을 출력하고 줄바꿈 의미
		}    
		
	}//메인 종료

}//클래스 종료

 


[참고 사이트]

https://kkh0977.tistory.com/530

 

180. (java/자바) 알고리즘 : for문 사용해서 달팽이 모양 배열 순차적으로 데이터 삽입 실시 - 세부

/* =========================== */ [ 개발 환경 설정 ] ​ 개발 툴 : Eclipse 개발 언어 : Java /* =========================== */ ​ /* =========================== */ [소스 코드] package ex5; public cla..

kkh0977.tistory.com


 

반응형
Comments