배열데이터한칸씩회전하기

svv_vvs·2022년 9월 2일
0

배열데이터한칸씩회전하기

삼성 코딩테스트에서 구현문제로 응용되서 사용됩니다.
(데이터를 한칸씩 옮긴 훈 특정 조건을 실행하는 경우)

특징

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);
    }
}
profile
안녕하세요. SW 개발자입니다.

0개의 댓글