Algorithm - Hash CodingTest Tip

  • Java로 코딩테스트를 준비하며 부족한 부분을 공부하기 위해 정리하였음.
  • 코딩테스트 Hash와 관련된 정리내용임.

1. HashMap 에서 사용하는 기본적인 메서드들

  • .put(key, value) : 키와 값을 추가한다. 같은 key가 있으면 덮어 씌워버린다.

  • .remove(key) : 해당 key, value를 완전히 삭제한다.

  • .get(key) : 해당 key의 값을 불러온다.

  • .size() : map의 길이를 구한다.

  • .containsKey(key) / .containsValue(val) : 해당 key나 Value에 해당 값이 있는지를 확인한다.

  • .keySet, Values :

    • for문에 넣음으로써 key나 value를 통한 for문을 돌릴 수 있다.

    • 그냥 프린트하면 연속되어 출력된다. ex) [ a, b, c, d, e ]

  • .getOrDefault(key, defaultValue) : key를 넣어보고, 해당 key가 없다면 defaultValue를 반환한다. key가 있으면 그 key의 value를 반환한다.

  • .clear() : 모두 지운다.

  • .isEmpty() : element가 있는지 없는지 boolean으로 반환해준다.

  • .forEach : 모든 키, 밸류를 순회한다.

    • ex)
     map.forEach((key, val) -> {
         System.out.println(key);
         System.out.println(val);
     });
    



2. Map 도 equals 로 비교가 가능하다.

  • Map에서 equals도 동등의 역할을 할 수 있도록 오버라이드 되어있음. 그래서 equals로 맵의 값 비교가 가능하다.

  • key값과 value값이 모두 동일하다면 equals 사용시 String 처럼 true가 나온다.



3. TreeSet 을 활용하자.

  • 중복되지 않는 값을 넣는 자료구조에는 HashSet도 있지만, reverseOrder()처럼 자동으로 정렬해주는걸 사용하고 싶으면, TreeSet 이 좋다.

  • TreeSet은 자동 정렬을 해주기 때문.

  • TreeSet tSet = new TreeSet<>(); 이렇게 하면 오름차순 자동 정렬이고,

  • TreeSet tSet = new TreeSet<>(Collections.reverseOrder()); 이렇게 하면 내림차순 자동 정렬이 된다.



4. HashMap 과 Sliding Window 알고리즘을 합친 풀이 방법을 잘 공부하고 복습하고 숙지할 것.

  • 생각보다 많이 나오는 문제 유형 방식이다.
 public static List<Integer> solution(int n, int k, int[] arr) {
	ArrayList<Integer> answerList = new ArrayList<>();
	HashMap<Integer, Integer> map = new HashMap<>();
	for (int i=0; i<k-1; i++) {
		map.put(arr[i], map.getOrDefault(arr[i], 0) + 1);
	}
	int lt = 0;
	for ( int rt = k-1; rt < n; rt ++ ) {
		map.put(arr[rt], map.getOrDefault(arr[rt], 0) + 1);
		answerList.add(map.size());
		map.put(arr[lt], map.get(arr[lt]) - 1);
		if ( map.get(arr[lt]) == 0 ) map.remove(arr[lt]);
		lt ++;
	}

	return answerList;
 }



5. 중복 확인에는 Map의 getOrDefault 메서드를 활용하는 것이 좋다.






results matching ""

    No results matching ""