Structure Change

조회 구조를 바꾸면 데이터 정책도 같이 이동한다

리스트를 해시 집합으로 바꾸면 평균 조회는 빨라지지만 중복, 순서, 키 정규화, 관찰 가능성은 새 기준으로 다시 확인해야 합니다.

중복

집합은 같은 키를 합친다

중복 사용자가 의미 있는 데이터라면 맵이나 카운터 구조가 필요하다.

순서

해시는 정렬 출력을 보장하지 않는다

목록 화면이나 리포트가 필요하면 별도 정렬 단계를 남긴다.

공백과 대소문자를 맞춘다

`Alice`와 ` alice `를 같은 사용자로 볼지 먼저 정규화한다.

최악

평균 O(1) 뒤의 충돌 검토

입력 분포를 모르면 최악 지연과 재해시 비용도 테스트한다.

로그

디버깅 가능한 형태를 남긴다

해시 내부 순서 대신 조회 키와 결정 이유를 로그로 남긴다.

교체 전 리스트는 순서와 중복을 자연스럽게 보존하지만 조회가 선형 비용이다.
교체 후 해시 구조는 조회가 빠르지만 순서와 중복 정책을 코드로 드러내야 한다.
판정 문장 조회 90%, 정렬 출력 없음, 중복 무시 가능할 때 해시 집합을 우선한다.

요구사항이 바뀌는 지점

정렬 출력이나 범위 검색이 추가되면 트리 또는 정렬 단계가 후보로 올라온다.

테스트가 잡아야 할 지점

대소문자, 공백, 중복, 100만 건 입력을 한 번에 넣어 교체 효과를 본다.