본문 바로가기

프로그래머스/해시

map을 사용한 해시테이블

반응형

해시란?

key와 연결되어 있는 value를 삽입, 삭제, 탐색하는 알고리즘 함수이다.

 

해시테이블?

자료구조의 종류 중 하나 (ex. Array, Object 등)이며 key와 value를 가지는 자료구조 형태이다.

 

언제 사용해?

특정 종류로 분류되는 값들이 있는데, 걔들을 지지고 볶고 해야할 때 해시 테이블을 사용하여 풀어주면 좋을 것 같다.

 

Map을 사용한 해시테이블

0. new Map() : 해시테이블 만들기

let map = new Map();

1. set() : 값 가져오기

let number = 0;
let str = 'string';
let obj = { a: 1 };
let fnc = () => {
    console.log('fnc');
};

map.set(number, 4); //key에 number 가능
map.set(str, 1); // key에 string 가능
map.set(obj, 2); //key에 object 가능
map.set(fnc, 3); // key에 함수 가능
map.set(number, 0); // 덮어쓰기 가능

console.log(map); // Map(4) {0 => 0, "string" => 1, {…} => 2, ƒ => 3}

2. get() : 값 얻기

map.get(str); // 1
map.get(obj); // 2
map.get('none'); // undefined  
map.get({ a: 1 }); // undefined, obj !== { a: 1 }

3. has() : 값 찾기

map.has(str); // true
map.has(obj); // true
map.has('none'); // false

5. delete() : 값 삭제하기

map.delete(str); // true 
map.get('none'); // false

6. size : 맵 길이

map.size // 4
map.length // undefined

7. for-of 문으로 해시 탐색

//key, value 쌍으로 출력
for (let [key, value] of map) {
  console.log(key + ' = ' + value)
}

//key만 출력
for (let key of map.keys()) {
  console.log(key)
}

//value만 출력
for (let value of map.values()) {
  console.log(value)
}

 

반응형