2012년 8월 29일 수요일

문제로 풀어보는 알고리즘 0.3 생각해보기 풀이 Ver 1.0

java로 짜봤어요.

    public static int[] rotate(int[] arr, int s, int t, int k){
       
        if ( arr == null || arr.length < t || arr.length < k || s > t ) return arr;
        int[] tmpArr = new int[arr.length];
        int idx = 0;
        int tmpVal = 0;
        tmpVal = arr[t];
       
        for ( int i = 0; i < arr.length ; i++ ){
            if ( i < s || i >= t) idx = i+k;
            if ( s <= i && i < t ) idx= i+k+1;
            if ( i == t ) idx = s + k;
            if ( idx >= arr.length ) idx = idx % arr.length;
           
            if ( i == t ){
                tmpArr[idx] = tmpVal;               
            }else{
                tmpArr[idx] = arr[i];
            }
            System.out.println(i + " => " + idx );
        }
        return tmpArr;
    }
   
   
    public static void main(String[] args){
       
        int[] arr = new int[]{1,2,3,4,5,6,7,8};
        arr = rotate(arr, 2,6, 2);
       
        for( int l = 0; l < arr.length; l++)
        System.out.println( arr[l]);
    }




댓글 없음: