자료구조&알고리즘/자료구조, 알고리즘 이해
해시테이블 활용해 원소찾기
밍풀
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;