배열 arr[]과 위치 s, t가 있을 때, arr[s], arr[s+1], ..., arr[t-1]을 오른쪽으로 한 칸씩 이동하고, arr[t]는 arr[s]로 복사하는 것을 1만큼 오른쪽으로 회전시킨다.
예를 들어 s=2, t=6이면 길이가 8인 아래 배열은 그림과 같이 바뀐다.
0 | 1 | s=2 | 3 | 4 | 5 | t= 6 | 7 |
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
1 | 2 | 7 | 3 | 4 | 5 | 6 | 8 |
- #include <cstdlib>
- #include <iostream>
- using namespace std;
- void right_rotatie(int arr[], int s, int t)
- {
- int temp;
- temp = arr[t];
- for(t; t>=s; t--)
- {
- arr[t]=arr[t-1];
- }
- arr[s]=temp;
- }
- int main()
- {
- int arr[8]={1, 2, 3, 4, 5, 6, 7, 8};
- int s = 2;
- int t = 6;
- right_rotatie(arr, s, t);
- for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
- cout << arr[i];
- return 0;
- }
12734568
반응형
'IT > [Everyday]Coding' 카테고리의 다른 글
팩토리얼 계산 2가지 방법 (0) | 2014.12.19 |
---|---|
queue 구현 (0) | 2014.12.19 |
두 원소 바꾸기 swap() (0) | 2014.12.19 |
C++로 간단하게 구현한 스택 (0) | 2014.12.19 |
셀 정렬 in C# (0) | 2014.12.19 |