HashMap, TreeSet

강호수·2022년 9월 13일

알고리즘 강의

목록 보기
4/7

4-1

for (char x : s.toCharArray()) {
	map.put(x, map.getOrDefault(x, 0) + 1);
}
  1. s라는 String을 char 형태로 분해한다.
  2. map.getOrDefault(x,0)
    -> map에서 x라는 문자를 찾는다. 없다면 기본값 0을 넣고, 있다면 그 값을 출력한다.
for (char key : map.keySet()) {
	if (map.get(key) > max) {
		max = map.get(key);
		answer = key;
	}
}
  1. map.keySet()
    -> map에서 모든 key 값을 반환
  2. map.get(key)
    -> map에서 key 값에 해당하는 value 값을 반환

4-2 ~ 4-4

map.put(a.charAt(lt), map.get(a.charAt(lt))-1);
if (map.get(a.charAt(lt))==0)
	map.remove(a.charAt(lt));
lt++;

위의 코드 예시와 같이 lt, rt 를 이용해서 푸는 문제의 경우에 한칸씩 오른쪽으로 이동하게 된다. 이 때 옮기면서 map의 key value가 0이 된다면 그 경우에는 count 하면 안되므로 map.remove()를 통해서 그 key 요소를 지워줘야 한다.
-> 그렇지 않을 시에 개수가 하나 더 count 될 수도 있다.

4-5

TreeSet<Integer> treeSet = new TreeSet<>(Collections.reverseOrder());
for(){
	for(){
    	for(){
        	treeSet.add();

TreeSet은 값을 받으면 오름차순으로 정렬한다.(1 -> 100)
하지만 뒤에 Collections.reverseOrder()를 붙여준다면 내림차순으로 정렬하게 되고, 몇번째 최대값을 구하는 문제가 나왔을 때 이렇게 풀면 쉬워진다.

0개의 댓글