Hash

Algorithm

알고리즘 노트 기록용

개념

key: value 형태를 갖는 자료구조 (전화번호부)

무언가를 찾기 위한 검색어가 key, 관련 정보가 value.

주로 사용되는 함수 : get, put, getOrDefault

HashMap.put(“A”,true)== HashMap[“A”] = true

bool fin = hashmap.get(“A”); == bool fin = hasnmap[“A”];

hashMap.get(“A”) -> “A” 키가 존재하는지 확인해야 함

hashMap.getOrDefault(“A”,false) -> A가 있다면 A의 value를 반환, else false반환


어떤 문제에서 Hash를 써야 할까?

-> String 을 기반으로 정보를 기록하고 관리해야 될 때 무조건 해시를 씀

Programmers 문제 예시

  1. 완주하지 못한 선수 :
    1. 선수 이름 -> 완주 여부
    2. String -> hash
    3. String Key : Bool Value
  2. 신고 결과 받기 :
    1. 신고 당한 사람 기준 -> 신고자 목록
    2. 신고당한 사람 이름 String
    3. String Key : ArrayList Value
  3. 위장 :
    1. 옷의 종류에 따라 몇개의 의상 종류가 있는지
    2. 옷의 종류는 정수가 아닌 String
    3. String Key : Integer Value