본문 바로가기
728x90

시간복잡도2

[PYTHON] 알고리즘 시간 복잡도 너머의 파이썬 특유 상수 시간 오버헤드 5가지 해결 방법과 성능 차이 분석 많은 개발자가 알고리즘의 효율성을 판단할 때 Big-O 표기법으로 나타내는 시간 복잡도에 매몰되곤 합니다. 하지만 실제 프로덕션 환경에서 파이썬 코드를 실행할 때, $O(N)$의 알고리즘이 예상보다 느리게 작동하거나 심지어 $O(N^2)$에 근접하는 체감 속도를 내는 경우가 빈번합니다. 이는 알고리즘 자체의 논리적 단계 외에도, 파이썬 인터프리터(CPython) 구조에서 발생하는 상수 시간 오버헤드(Constant-time Overhead) 때문입니다. 본 포스팅에서는 파이썬의 동적 타이핑, 메모리 관리, 그리고 객체 추상화가 어떻게 실제 실행 속도에 영향을 미치는지 심층적으로 분석하고, 이를 극복하기 위한 구체적인 방법과 성능 차이를 해결하는 최적화 전략을 제시합니다.1. 왜 시간 복잡도만으로는 부족한.. 2026. 3. 15.
[JAVA] Collections.sort()의 내부 알고리즘 : TimSort의 혁신과 작동 원리 자바 프로그래밍을 하면서 리스트를 정렬할 때 우리는 습관적으로 Collections.sort()를 호출합니다. 하지만 이 메서드 뒤에 숨겨진 정렬 알고리즘이 현대 컴퓨팅 환경에 최적화된 공학적 결정의 집약체라는 사실을 아는 개발자는 많지 않습니다. 오늘은 단순히 '정렬된다'는 결과 너머, 자바가 선택한 TimSort 알고리즘의 본질을 파헤쳐 봅니다.1. 왜 Quick Sort가 아닌 TimSort인가?전통적인 전산학 강의에서는 가장 빠른 정렬 알고리즘으로 Quick Sort를 배웁니다. 하지만 자바의 Collections.sort()(정확히는 List.sort())는 Quick Sort가 아닌 TimSort를 채택하고 있습니다. 그 이유는 '안정성(Stability)'과 '데이터의 현실적 특성' 때문입니.. 2026. 1. 18.
728x90