삼성 코딩테스트에서 구현문제로 응용되서 사용됩니다.
(데이터를 한칸씩 옮긴 훈 특정 조건을 실행하는 경우)
1) 데이터를 한칸 옮길 때 데이터 저장하는 부분 고민해볼것(덮어쓸 때 데이터 날라가는 현상)
2) while문 밖에서 시작 조건을 설정
import java.util.Arrays;
public class 배열한칸씩회전하기 {
static int dx[] = {1,0,-1,0};
static int dy[] = {0,1,0,-1};
public static int[][] rotateArr(int[][] arr)
{
int sx = 0;
int sy = 0;
int idx=0;
int firstValue = arr[sx][sy];
while(true)
{
if(sx+dx[idx]<0||sx+dx[idx]>=arr.length||sy+dy[idx]<0||sy+dy[idx]>=arr.length)
{
idx+=1;
}
if(idx>3) break;
sx+=dx[idx];
sy+=dy[idx];
int secondValue = arr[sx][sy];
arr[sx][sy]=firstValue;
firstValue = secondValue;
}
print(arr);
return arr;
}
public static void print(int[][] arr)
{
for(int r=0;r<arr.length;r++)
{
System.out.println(Arrays.toString(arr[r]));
}
System.out.println("==============END==============");
}
public static void main(String[] args) {
//int arr[][]={{1,2,3,4},{5,6,7,8},{9,10,11,12},{13,14,15,16}};
int arr[][] ={{1,1,0,0},{0,0,0,0},{0,0,0,0},{0,0,0,0}};
for(int i=0;i<12;i++)
arr=rotateArr(arr);
}
}