키-값 저장할 때 해시테이블 쓰면 평균 O(1)이라 대부분 그냥 해시 쓰면 되는 줄 알았는데요. 최근에 자가균형 BST(레드블랙 트리나 AVL) 관련 글 보다가 이게 언제 필요한 건지 궁금해졌어요.
제가 정리한 건 이 정도예요. 해시는 조회/삽입/삭제 평균 O(1)로 빠른데 순서라는 개념이 없어서, 예를 들어 "50점에서 80점 사이 유저 다 뽑아줘" 같은 범위 쿼리나 정렬된 순회는 못 하는 거 같더라고요. 반대로 BST는 연산이 O(log n)으로 좀 느리지만 정렬 순회, 범위 조회, 최소/최대, 선행자/후행자 이런 걸 다 지원하고요.
그래서 게임 리더보드에서 "상위 K명"이나 "특정 점수대 유저 조회" 같은 건 BST 계열이 맞고, 그냥 아이디로 유저 정보 있나 없나 찾는 건 해시가 낫다... 이렇게 이해했는데 방향 맞을까요? 실무에서 이 둘 나누는 실제 기준이 궁금합니다.