자료구조&알고리즘/자료구조, 알고리즘 이해

해시테이블 활용해 원소찾기

밍풀 2023. 2. 22. 16:45
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
let a = {
    'min'true,
    'ji' : true,
    'key'true
}
 
console.log(a['weight'])//undefined
console.log(!a['weight'])//true
 
if(!a['weight']){
    console.log(false//조건문이 true 이기에 false 찍힘, weight라는 원소는 없음
}
 
//a 에 min 이라는 원소가 있는지도 확인가능
console.log(a['min']) //true
cs

 

해시테이블을 음식과 가격, 이름과 나이 등 key와 value값이 쌍으로 존재하는 데이터가 있을때 사용할 수도 있지만, 위와 같이 쌍이 아닌 데이터 에서도 원소를 찾을때 이용할 수도 있다. 

위와 같이 원소를 해시테이블의 키로 넣고 value에 true 등 일관된 값을 넣으면 

N단계의 선형 검색이 아닌 O(1)검색으로 바로 찾기가 가능 해짐 ! 

이렇게 룩업하는 방법을 해시테이블을 인덱스로 사용하기 라고 한다고 함.

 

이걸 활용해서 두배열이 부분집합의 관계인지 아닌지도 쉽게 확인 가능.

큰 배열을 해시테이블로 만들고 아래 코드 일부와 같이 작은 배열의 원소를 순회하면서 존재하지 않을시 바로 false리턴하고 순회할때까지 값이 존재하면 true를 리턴하는 식.

 

for(let a of smallarr){

if(!hashtable[a]){ return false;}

}

return true;