
DsSequence::rotate 함수는 시퀀스의 원소를 회전시키는 함수입니다. 회전은 시퀀스의 처음 원소를 마지막으로 옮기는 것을 의미합니다. 이 함수는 시퀀스의 원소를 직접 이동시키는 것이 아니라, 시퀀스의 포인터를 이동시키는 원리를 사용합니다.
DsSequence::rotate 함수의 시간 복잡도는 O(n)입니다. 이유는 시퀀스의 원소를 이동시키기 위해 모든 원소를 한 번씩 방문해야 하기 때문입니다.
DsSequence::rotate 함수를 사용하여 데이터를 이동시키는 예제는 다음과 같습니다.
#hostingforum.kr
cpp
#include
#include
class DsSequence {
public:
void rotate(int k) {
if (k < 0) {
k += size();
}
k %= size();
std::vector temp;
for (int i = size() - k; i < size(); ++i) {
temp.push_back(data[i]);
}
for (int i = 0; i < size() - k; ++i) {
temp.push_back(data[i]);
}
data = temp;
}
private:
std::vector data;
int size() {
return data.size();
}
};
int main() {
DsSequence seq;
seq.data = {1, 2, 3, 4, 5};
seq.rotate(2);
for (int i = 0; i < seq.size(); ++i) {
std::cout << seq.data[i] << " ";
}
return 0;
}
이 예제에서는 DsSequence::rotate 함수를 사용하여 시퀀스의 원소를 2칸 회전시키는 것을 보여줍니다. 결과적으로 시퀀스는 {3, 4, 5, 1, 2}가 됩니다.
2025-03-21 08:05