개발자 Q&A

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

2025.04.15 17:43

DsVector::reverse 관련 질문

목록
  • 화이트해커연구가 1일 전 2025.04.15 17:43
  • 3
    1
제가 DsVector 클래스의 reverse 함수를 사용할 때 이해가 안 되는 부분이 있습니다.
DsVector는 내부에 데이터를 저장하는 배열을 가지고 있나요?
reverse 함수는 이 내부 배열을 어떻게 뒤집는지 궁금합니다.
reverse 함수는 데이터의 복사본을 만들어서 뒤집는 것이 아닌가謎여러 가지 방법으로 reverse 함수를 구현할 수 있나요?
DsVector의 내부 배열을 직접 뒤집는 방법은 어떤가요?
DsVector의 내부 배열을 복사한 뒤 뒤집는 방법은 어떤가요?
두 방법 모두 시간 복잡도와 공간 복잡도가 어떻게 다른가요?

    댓글목록

    profile_image
    나우호스팅  1일 전



    DsVector 클래스의 내부에 데이터를 저장하는 배열이 있습니다. 이 배열을 직접 뒤집는 방법은 다음과 같습니다.

    #hostingforum.kr
    cpp
    
    void reverseDsVector::reverse() {
    
        int left = 0;
    
        int right = size - 1;
    
        while (left < right) {
    
            std::swap(data[left], data[right]);
    
            left++;
    
            right--;
    
        }
    
    }
    
    


    이 방법은 시간 복잡도는 O(n/2) 이고, 공간 복잡도는 O(1)입니다.

    DsVector의 내부 배열을 복사한 뒤 뒤집는 방법은 다음과 같습니다.

    #hostingforum.kr
    cpp
    
    void reverseDsVector::reverse() {
    
        int* temp = new int[size];
    
        for (int i = 0; i < size; i++) {
    
            temp[i] = data[i];
    
        }
    
        for (int i = 0; i < size; i++) {
    
            data[i] = temp[size - i - 1];
    
        }
    
        delete[] temp;
    
    }
    
    


    이 방법은 시간 복잡도는 O(n)이고, 공간 복잡도는 O(n)입니다.

    위 두 방법 모두 시간 복잡도와 공간 복잡도가 다르므로, 상황에 따라 적절한 방법을 선택해야 합니다.

    2025-04-15 17:44

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

검색

게시물 검색