JAVASCRIPT/문법

[자료구조 / 알고리즘] 해시

예글 2024. 3. 3. 23:04

1. 해시 테이블이란?

  • 자료구조 종류 중 하나로 key와 value를 가짐
직업 : 개발자
나이 : 28

 

2. 해시란?

  • 해시함수라고 하는 함수를 이용해서 입력값을 고정길이 문자열로 치환하는 것
  • 배열은 key값에 숫자만 받을 수 있지만 해시는 문자열까지 받을 수 있음
  • 문자열로 받은 key 값을 해싱이라는 과정을 통해서 일정 길이의 주소값으로 바꿔서 저장해두고 있기 때문 --> 해시 함수의 역할

3. 자바스크립트에서는 좀 더 쉽게 해시 테이블을 사용할 수 있게끔 해주는 자료구조가 있다. --> Map

4. Map이란?

  • key가 있는 데이터를 저장하는 데 쓰이는 자료구조
  • Map의 key값은 문자열 가능 --> 해시에 이용 가능

5. Map 메서드

  • new Map() --> Map의 객체를 만들 때 사용
  • map.set(key,value) --> key를 이용해 value값 저장
  • map.get(key) --> key에 해당하는 value 반환
  • map.has(key) --> key가 존재한다면 true, 없다면 false 반환
  • map.delete(key) --> key에 해당하는 값 삭제
  • map.size --> 요소의 개수 반환
  • map.entries --> 맵 객체처럼 key-value를 쌍으로 묶은 이터레이터 반환
function solution(participant, completion) {
    let answer = ''
   const myMap = new Map();

    for (const part of participant){

        if(!myMap.get(part)){
            // map에 값이 없으면 value에 1 저장
            myMap.set(part, 1);
        }else{
            // 있다면 value에 + 1
            myMap.set(part, myMap.get(part)+1);
        }
    }

    for(const com of completion){
        // 완주자 배열을 반복해 value 1씩 감소
        if(myMap.get(com)){
            myMap.set(com, myMap.get(com)-1);
        }
    }

    for(const part of participant){
        // value가 1 이상이면 완주하지 못한 인원이므로 return
        if(myMap.get(part) && myMap.get(part) >=1 ){
            answer = part;
        }
    }

    return answer
}