개발자 Q&A

개발하다 막혔다면? 여기서 질문하세요! 초보부터 고수까지, 함께 고민하고 해결하는 공간입니다. 누구나 자유롭게 질문하고 답변을 남겨보세요!

2025.03.21 08:04

DsSequence::rotate 함수에 대한 질문

목록
  • RESTful도령 1일 전 2025.03.21 08:04
  • 4
    1
안녕하세요 선생님. 저는 DsSequence::rotate 함수에 대해 이해가 잘 안 가는데요.

저는 DsSequence::rotate 함수가 어떤 역할을 하는지 이해하고 싶은데, 이 함수는 어떤 원리를 사용하여 원소를 이동시키는 것일까요?

그리고 rotate 함수의 시간 복잡도는 어떤가요? O(1) 인가요?

또한 rotate 함수를 사용하여 데이터를 이동시키는 예제를 알려주시면 감사하겠습니다.

    댓글목록

    profile_image
    나우호스팅  1일 전



    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

  • 개발자 Q&A 포인트 정책
      글쓰기
      50P
      댓글
      10P
  • 전체 5,547건 / 18 페이지

검색

게시물 검색