2021.01.07 - 13:18
코드스쿼드 마스터즈 과정 첫번째 주 알고리즘 날이다. 백준 1076번 저항 문제는 Map이 생각나는 문제이다. 문제는 아무것도 Map에 대해 생각나는 것이 없다. 이전에 쓴 포스팅들을 살펴보면 분명히 써본거 같아 보이는데 전혀 기억이 안난다.
콜렉션즈 프레임워크에서 Map은 이러한 위치에 있다. Map 안에도 여러가지가 있다. 그중에서 여러 곳에서 흔히 들어 볼수 있는게 HashMap인데 아직 이유는 잘 모르겠다. 흔히 쓰니까 나도 HashMap을 이용해서 문제를 풀어봐야겠다.
그런데 해싱(Hashing)이란?
대부분의 탐색 방법들은 탐색 키를 저장된 키 값과 반복적으로 비교하면서 탐색을 원하는 항목에 접근한다. 반면 해싱은 키 값에 직접 산술적인 연산을 적용하여 항목이 저장되어 있는 테이블의 주소를 계산하여 항목에 접근한다. 이렇게 키 값의 연산에 의해 직접 접근이 가능한 구조를 해시 테이블(hash table)이라 부르고, 해시 테이블을 이용한 탐색을 해싱(hashing)이라 한다.
출처: https://mattlee.tistory.com/62 [waca's field]
HashMap의 특징은 다음과 같다:
HashMap의 사용방법:
HashMap<String, Integer> map = new HashMap<>(); // new에서 타입 파라미터 생략가능
//map.put(Key, Value); Key와 Value를 지정한 타입 파라미터 순서대로 입력한다
map.put(black, "0"); //값 추가
map.put(brown, "1");
map.put(red, "2");
map.remove(black); // Key인 black 제거
map.clear(); // 모든 값 제거
System.out.println(map); //전체 출력 {black=0, brown=1, red=2}
System.out.println(map.get(black)); //black의 Value인 0이 출력된다
//그 외에 entrySet()을 활용하거나 keySet()을 활용해서 전체 출력이 가능함