[JAVA] 2차원 배열-오른쪽으로 돌리기

나옹·2022년 11월 20일
0

2차원배열 테트리스 값을 오른쪽으로 돌리는 메서드

처음엔 그냥 한줄씩 돌려 저장하면 될거라고 생각했는데 원래의 값위에 다른값이 저장되고 그 값이 돌아가게 된다면 어떤값은 여러번 나오고 어떤값은 나오지 않는다는 것을 알게 되었다.

그래서 생각한 방법은 새로운 값을 저장하기 전에 원래 있던값을 따로 저장하고 나중에 가져오면 되겠다고 생각하였다.

  	  int Max=k.length-1; 
  	  int Min=0;

테트리스의 바깥쪽 부분부터 돌릴거라 최댓값과 최솟값을 가지고 와주었다.

  	  for(int j=0; j<Math.round(Max/2); j++) {
  	  	  int [] a=new int[k.length];
  	  	  int [] b=new int[k.length];
  	  	  int [] c=new int[k.length];
  	  	  int [] d=new int[k.length];

처음 진행되는 for문은 배열의 길이를 2로 나눈후 반올림 해준 횟수만큼 돌리겠다는 for문이다.

각 제일 바깥쪽의 값들을 저장하기 때문에 2차원 배열의 길이만큼 배열을 선언해 주었다.

	for(int i=Min; i<=Max; i++) {
  	  		  a[i]=k[Min][i];
  	  		  b[i]=k[i][Max];
  	  		  c[i]=k[Max][i]; 
  	  		  d[i]=k[i][Min];

  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[i][Max]=a[i];
  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[Max][Max-i]=b[i];
  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[i][Min]=c[i];
  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[Min][Max-i]=d[i];
  	  	  }

각각의 배열에 2차원 배열의 바깥 값들을 저장해주고
for문을 돌려 오른쪽으로 돌아가게 하였다.

각각의 값이 다음엔 어느배열로 들어가아햐는지 값을 정리하면 조금 편하게 계산할 수 있다.

Min++;
Max--;

for문이 다 돌고나면 그 다음 안쪽 배열을 돌려야 하기때문에 최솟값은 +1, 최댓값은 -1을 해주고 다시 for문이 돌아간다.

최종코드

 public void r_totation(int[][] k) {
  	  int Max=k.length-1; 
  	  int Min=0;
      
  	  for(int j=0; j<Math.round(Max/2); j++) {
  	  	  int [] a=new int[k.length];
  	  	  int [] b=new int[k.length];
  	  	  int [] c=new int[k.length];
  	  	  int [] d=new int[k.length];

  	  	  for(int i=Min; i<=Max; i++) {
  	  		  a[i]=k[Min][i];
  	  		  b[i]=k[i][Max];
  	  		  c[i]=k[Max][i];  	  				  
  	  		  d[i]=k[i][Min];

  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[i][Max]=a[i];
  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[Max][Max-i]=b[i];
  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[i][Min]=c[i];
  	  	  }
  	  	  for(int i=0; i<=Max; i++) {
  	  		  k[Min][Max-i]=d[i];
  	  	  }


  	  	  Min++;
  	  	  Max--;
  	  }
    }

2차원배열에 관한 더 많은 문제들=>
2차원 배열 문제모음

profile
최고의 개발을 위해 !

0개의 댓글

관련 채용 정보