해쉬맵 2

java hashmap의 시간복잡도에 관해서

HashMap은, Map인터페이스의 컬렉션 중 하나이다. 이 HashMap은 key-value로 하나의 key가 하나의 value를 갖도록 한다. 이전에 ArrayList와 LinkedList의 차이점에 대한 글을 작성한 적이 있다. 각각의 내용들에 대해서 생각해 보면, 두 자료구조 모두 값을 읽어오거나 변경할 때에 시간복잡도를 고려해줄 필요성이 있었다. 근데 이 HashMap은 값을 넣거나 변경할 때 모두 시간복잡도가 O(1)이다!! 이게 어떻게 가능할까? Put의 시간복잡도 HashMap의 동작 방식 위에서 설명하였듯 HashMap은 하나의 key가 하나의 value를 갖는다. 이 key를 찾아가기 위해서 어떠한 key가 입력되면 java에서는 이곳에 해시함수를 적용시켜 고유 index를 만든다. 예..

이론 정리/java 2022.12.25

[백준 11509번] 풍선 맞추기 - java

문제 설명 1. 풍선의 수 N이 주어진다. 2. 왼쪽에서 오른쪽으로 화살을 쏘고, 풍선을 맞추게 되면 높이가 1줄어서 화살이 날아가게 된다. 3. 아래높이의 풍선이 있으면 또 이걸 터트리고 높이가 1 줄어든다. 4. 최소의 화살개수를 구하면 된다. 풀이 과정 1. 그리디...겠지? 나는 걍 해쉬맵으로 구현했다. 2. 풀이 과정은 이렇게 했다. A. 풍선을 처음부터 순서대로 확인하면서, HashMap에 해당 높이에 있는 화살이 있는지 먼저 파악해준다. B. 해당 높이에 화살이 없으면 쏴야하는 화살의 개수는 하나 늘고, 만약에 있으면 해당 높이의 화살을 하나 없애준다. C. 어쨌든 이 화살은 풍선을 맞추었으니, 아래 높이의 화살로 변경될것이다. D. 참고로, HashMap은 처음 풍선들의 위치를 받을때마다 ..

알고리즘 공부 2022.04.09