기술/JavaScript

값을 찾아낼 때는 해시테이블

빔네모 2023. 12. 12. 00:59

어떤 특정 값을 찾아야 한다면 해시테이블 구조를 고려해보자.

배열은 순서가 중요한 경우에 유용할 수 있으나, 해시 테이블은 키-값 쌍을 다룰 때 더 빠르게 검색할 수 있는 장점이 있다.

// 배열을 이용한 방식
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,
}; // 빠르다

제나 모든 상황에서 동일한 최적의 자료구조가 있는 것은 아니니, 상황에 따라 적절한 자료구조를 선택하는 것이 중요하다.