티스토리 뷰


배열의 요소를 n 만큼 순환시키고 싶을 때,

예) {1,2,3,4,5} 를 3만큼 왼쪽으로 이동하면 {4,5,1,2,3}이 된다.


코드

public static double[] LeftShift(this double[] @thisint shiftIndex)
{
    var listDbl = @this.ToList();
    try
    {
    listDbl.Reverse(0, shiftIndex);
    listDbl.Reverse(shiftIndex, listDbl.Count - shiftIndex);
    listDbl.Reverse(0, listDbl.Count);
    }
    catch
    {
    if (shiftIndex < 0)
        throw new System.ArgumentException("시프트 값이 음수입니다.""shiftIndex");
    }
    return listDbl.ToArray();
}
cs


설명

double[] arr = {1,2,3,4,5};
double[] arr2;

arr2 = arr.LeftShift(3); // arr 배열을 3만큼 이동할 때

첫번째 Reverse가 실행되면 첫번째부터 3만큼 뒤집어지므로 {3,2,1,4,5}
두번째 Reverse가 실행되면 그 다음부터 마지막까지 뒤집어지므로 {3,2,1,5,4}
세번째 Reverse가 실행되면 전체가 뒤집어지므로 {4,5,1,2,3}


연습 문제

새로운 메서드를 만들고 ShiftIndex 값이 음수 또는 양수냐에 따라서 배열의 요소가 왼쪽 또는 오른쪽으로 이동하도록 코드를 짜봅니다.

TAG
댓글
댓글쓰기 폼