어떤 특정 값을 찾아야 한다면 해시테이블 구조를 고려해보자.
배열은 순서가 중요한 경우에 유용할 수 있으나, 해시 테이블은 키-값 쌍을 다룰 때 더 빠르게 검색할 수 있는 장점이 있다.
// 배열을 이용한 방식
let countriesArray = ["a", "b", "c", "d"]; // 하나씩 배열을 돌면서 찾음
배열을 사용한 방식은 각 요소를 찾을 때 O(N)의 시간 복잡도가 소요된다.
배열이 매우 크거나 효율적인 검색이 필요한 경우에는 비효율적일 수 있다.
// 해시 테이블을 이용한 방식
let countriesHash = {
a: true,
b: true,
c: true,
d: true,
};
countriesHash["a"]; // true // 단번에 찾을 수 있음
해시 테이블을 사용한 방식은 키를 통한 검색이 O(1)의 시간 복잡도로 가능하다.
데이터 검색이 빈번한 경우에는 해시 테이블이 효율적이다.
// 메뉴 정보를 배열로 표현한 방식 (O(N) 시간 복잡도)
let menuArray = [
{ name: "아메리카노", price: 1000 },
{ name: "라떼", price: 2000 },
];
// 메뉴 정보를 해시 테이블로 표현한 방식 (O(1) 시간 복잡도)
let menuHash = {
아메리카노: 1000,
라떼: 2000,
}; // 빠르다
언제나 모든 상황에서 동일한 최적의 자료구조가 있는 것은 아니니, 상황에 따라 적절한 자료구조를 선택하는 것이 중요하다.