reverse()
function
vector나 string에 대해서 reverse()함수를 이용하면 특정 부분을 거꾸로 만들 수 있다.
vector<int> nums = {1, 2, 3, 4, 5};
reverse.(nums.begin(), nums.end());
cout << nums << endl; // (5, 4, 3, 2, 1)
reverse.(nums.begin(), nums.begin()+3); // 1~3번째 원소에 대해서만 reverse
cout << nums << endl; // (3, 4, 5, 2, 1)
이 함수를 이용해 풀면 다음과 같다.
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
string solution(string my_string, vector<vector<int>> queries) {
for (vector<int> q: queries){
reverse(my_string.begin()+q[0], my_string.begin()+q[1]+1);
}
return my_string;
}
여담 - Python과의 비교
python의 경우 slicing을 이용해서 arr[i:j+1] = arr[j:i-1:-1]
만 해도 해결 가능한데 C++은 조금 귀찮긴 하다… 그나마 reverse() function이 있어서 일일히 부분 복사해서 붙여넣기 안해도 되니까 다행인듯!!