99클럽 코테 스터디 22일차 TIL [LeetCode] Sort Characters By Frequency (Java)

민경·2024년 6월 19일

문제

[LeetCode] Sort Characters By Frequency

풀이

주어진 문자열을 각 문자의 빈도가 높은 순으로 재정렬하는 문제

  • HashMap(해시맵)을 사용해 각 문자의 빈도수를 계산한다.
  • PriorityQueue(우선순위 큐)를 통해 빈도수를 기준으로 문자를 정렬한다.

정답 코드

class Solution {
    public String frequencySort(String s) {
        Map<Character, Integer> frequencyMap = new HashMap<>();
        for (char c : s.toCharArray()) {
            frequencyMap.put(c, frequencyMap.getOrDefault(c, 0) + 1);
        }

        List<Character> characters = new ArrayList<>(frequencyMap.keySet());
        characters.sort((a, b) -> frequencyMap.get(b) - frequencyMap.get(a));

        String answer = "";
        for (char c : characters) {
            int count = frequencyMap.get(c);
            for (int i = 0; i < count; i++) {
                answer += c;
            }
        }

        return answer;
    }
}
profile
강해져야지

0개의 댓글