반응형
C++ rotate 함수 - 백준 알고리즘 오답노트 10812
rotate 함수는 원소들을 말 그대로 회전을 하는 함수이다.
#algorithm에 포함
예)
vector에 1 2 3 4 5 가 포함
왼쪽으로 한칸 밀고 싶으면 rotate( v.begin() , v.begin()+1 , v.end() )을 넣으면 된다.
여기서 주의점은 rotate 의 첫번째 두번째 인자는 해당 원소를 포함하고, 세번째 인자는 포함하지 않는다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 | //10812 #include<iostream> #include<vector> #include<algorithm> using namespace std; int main(){ int n,m; cin>>n>>m; vector<int> v; for(int i = 1; i <= n; i++){ v.push_back(i);} while(m--){ //int start,mid,end;cin>>start>>end>>mid; //rotate(v.begin()+(start-1),v.begin()+(mid-1),v.begin()+end); int i,j,k; cin>>i>>j>>k; rotate(v.begin()+(i-1),v.begin()+(k-1),v.begin()+j); } for(int a:v){ cout<<a<<" "; } cout<<"\n"; return 0; } FB1. rotate(시작,중간,끝) 시작 포함, 중간 포함, 끝 안포함 mid 부터 end을 앞으로 나머지 뒤로, 거리와 크기의 직관 획득할것!! | cs |
반응형
'알고리즘 > 백준[BOJ] 오답노트' 카테고리의 다른 글
C++ 비교함수 활용 여러 인자 비교하기 - 백준 오답노트 10825 (0) | 2019.03.02 |
---|---|
C++ vector에 중복된 인자 제거하기 - 백준 알고리즘 오답노트 1181 (0) | 2019.03.02 |
C++ 파일의 끝 직접 입력하기 - 백준 알고리즘 오답노트 1152 (0) | 2019.03.02 |
c++ vector 초기 크기 인자값 문제 - 백준 알고리즘 오답노트 10819 (0) | 2019.02.02 |
C++ cin/cout 입출력 성능 개선 - 백준 알고리즘 오답노트 15552 (0) | 2019.02.02 |