99클럽 코테 스터디 32일차 TIL: 정렬

이주희·2024년 6월 20일
0

99클럽 코테 스터디

목록 보기
20/20
post-thumbnail

정렬을 활용한 알고리즘 문제풀이

오늘 푼 문제: 347. Top K Frequent Elements

입출력

  • 입력: 정수 배열과 그 중 많이 사용된 숫자를 뽑아야하는 개수 K가 주어집니다.
  • 출력: 많이 사용된 정수 K개가 담긴 배열을 반환합니다.

예제 코드

class Solution {
    public int[] topKFrequent(int[] nums, int k) {
        Map<Integer, Integer> map = new HashMap<>();
        for (int num : nums) map.put(num, map.getOrDefault(num, 0) + 1);
        // System.out.println(map);
        List<Integer> list = map.entrySet().stream()
        						.sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue()))
                            	.map(Map.Entry::getKey).collect(Collectors.toList())
                            	.subList(0, k);
        return list.stream().mapToInt(Integer::intValue).toArray();
    }
}
  • 사용 횟수의 경우 Map<Integer, Integer>를 활용하여 개수를 value에 담아주었습니다.
  • 그 후 stream을 활용하여 value 값을 기준으로 정렬을 한 뒤
  • map을 활용하여 키 값만 모은 후 리스트로 변환한 후 K번째 원소까지 subList합니다.
  • 정렬된 리스트를 정수배열로 변환한 후 반환합니다.

회고

  • stream을 사용하여 문제를 풀었습니다.
  • 내장함수 말고 스스로 함수를 작성해봤으면 어떨까 싶기도 합니다.
profile
공릉동 감자

0개의 댓글