더북(TheBook)

언뜻 보면 이 코드는 올바르게 동작하는 것처럼 보이며, 예외 역시 발생하지 않습니다. 더군다나 실제로 일부 문자가 제거된 listbytearray도 반환됩니다. 그러나 좀 더 자세히 살펴보면 제거되어야 하는 문자 중 하나가 변형된 객체 내에 여전히 남아 있다는 것을 알 수 있습니다. 이 문제는 요소가 삭제되면서 색인의 위치가 실제 기본 연속 순서열과 더 이상 일치하지 않기 때문에 발생합니다. 새 요소가 삽입(insertion)될 때도 같은 문제가 발생할 수 있습니다.

따라서 이 요구 사항에 대한 올바른 접근 방법은 적용된 조건에 따라 새로운 객체를 만들고 그 안에 선택적으로 추가(append)하는 것입니다. 파이썬의 listbytearray에 대한 추가 작업은 처리 비용이 낮습니다. 반면에 새로운 연속 순서열의 중간에 삽입하는 작업은 쉽게 2차 시간 복잡도3에 도달할 수 있습니다. 그 위험성에 대해서는 이 책의 다른 부분에서도 경고할 것입니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.