for (char x : s.toCharArray()) {
map.put(x, map.getOrDefault(x, 0) + 1);
}
for (char key : map.keySet()) {
if (map.get(key) > max) {
max = map.get(key);
answer = key;
}
}
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 될 수도 있다.
TreeSet<Integer> treeSet = new TreeSet<>(Collections.reverseOrder());
for(){
for(){
for(){
treeSet.add();
TreeSet은 값을 받으면 오름차순으로 정렬한다.(1 -> 100)
하지만 뒤에 Collections.reverseOrder()를 붙여준다면 내림차순으로 정렬하게 되고, 몇번째 최대값을 구하는 문제가 나왔을 때 이렇게 풀면 쉬워진다.