자료구조 HashMap과 stack

wisdom·2022년 9월 17일
0

백엔드 개발자라면?

목록 보기
31/42

leetcode를 풀면서 필요한 개념과 메서드 위주로 정리함

HashMap

  • key 와 value의 조합
  • 일반적으로 해시는 Key값을 Hash Function을 통해, HashCode를 내뱉고, 저장 공간의 Size로 나눠 Index를 정하여 Value값을 저장한다.

HashMap.getOrDefault(player, 0)

  • player 값을 달라 만약 player의 값이 없다면 0을 달라!
HashMap<String, Integer> map = new HashMap<>();  
for (String player : participant) {  
    map.put(player, map.getOrDefault(player, 0) + 1);  
}

HashMap.keySet()

  • map에 있는 key를 하나 씩 꺼낸다.
for (String key : map.keySet()) {  
    if (map.get(key) != 0) {  
        result = key;  
        break;  
    }  
}

HashMap.entrySet()

  • key와 value의 값 모두 출력
  • HashMap에 저장된 Key - Value값을 엔트리(키와 값을 결합)의 형태로 Set에 저장하여 반환

String answer = "";

Iterator<Map.Entry<String, Integer>> iter = map.entrySet().iterator();

while(iter.hasNext()) {
	Map.Entry<String, Integer> entry = iter.next();
	if(entry.getValue != 0) {
		answer = entry.getKey();
		break;
	}

}

HashMap.containsKey(String)

  • String이라는 Key가 현재 HashMap에 존재하는지 확인하는 함수이다.
  • 이 함수를 통해 현재까지 HashMap에 등록된 Key가 있는지 확인할 수 있고, 현 문제에서는 접두어가 HashMap에 존재하는지 확인할 수 있다.
import java.util.HashMap;
public class MyClass {
	public static void main(String[] args) {
		HashMap<String,Object> hm = new HashMap<String,Object>();
		hm.put("first", "1");
		hm.put("second", "4");

		System.out.println( hm.containsKey("first") ); // true
		System.out.println( hm.containsKey("third") ); // false
	}
}

Stack

  • 스택은 메모리 안 데이터들을 더욱 효율적으로 다루기 위해 만들어진 데이터 참조 방식이며, 한쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형구조
  • LIFO 구조

스택의 동작

  • push
  • pop
  • peek
    - 스택에서 top이 가리키는 데이터를 읽는 작업
    - 제일 최근에 들어간 데이터

참고: Java Collection Framework :: 자바의 자료구조 (List, Set, Map)

profile
문제를 정의하고, 문제를 해결하는

0개의 댓글