-
코테 연습[자바 코테 준비 11일차] HashMap 값 기준 정렬CodeingTestPrac/Java Coding Test 2023. 7. 5. 19:04
HashMap 을 선언한 후 , 키값 별로 데이터를 더한 상태에서 이름만 큰 순서로 출력을 하는 방법이다.
// String[] genres = {"classic", "pop", "classic", "classic", "pop"} ; // int[] plays = {500, 600, 150, 800, 2500}; Map<String,Integer> hm = new HashMap<>(); int n = genres.length; for(int i = 0 ; i < n ;i++){ hm.put(genres[i],hm.getOrDefault(genres[i],0)+plays[i]); } List<String> nameOrder = new ArrayList<>(hm.keySet()); nameOrder.sort((genre1, genre2) -> hm.get(genre2).compareTo(hm.get(genre1))); // pop , classic
문제 : 프로그래머스 Lv3 베스트 앨범
https://school.programmers.co.kr/learn/courses/30/lessons/42579
public int[] solution(String[] genres, int[] plays) { // 장르 이름별 점수 합산 후 스트리밍 많은 순서로 이름 뽑기 Map<String,Integer> genresTotal = new HashMap<>(); for (int i = 0; i < genres.length; i++) { String genre = genres[i]; int playsCount = genresTotal.getOrDefault(genre, 0); genresTotal.put(genre, playsCount + plays[i]); } List<String> nameOrder = new ArrayList<>(genresTotal.keySet()); nameOrder.sort((genre1, genre2) -> genresTotal.get(genre2).compareTo(genresTotal.get(genre1))); // 장르별 최대 아이템 2개 Map<String,List<int[]>> genreData = new LinkedHashMap<>(); for(int i = 0 ; i < genres.length ; i++){ String key = genres[i]; List<int[]> play ; int[] record = {plays[i],i}; if(!genreData.containsKey(key)){ play = new ArrayList<>(Arrays.asList(record)); }else{ play =genreData.get(key); play.add(record); play.sort(Comparator.comparingInt((int[] arr) -> arr[0]).reversed()); if(play.size() == 3) play.remove(2); } genreData.put(key,play); } List<Integer> ans = new ArrayList<>(); for(String key : nameOrder){ List<int[]> item = genreData.get(key); if(item.size() == 2){ ans.add(item.get(0)[1]); ans.add(item.get(1)[1]); }else{ ans.add(item.get(0)[1]); } } return ans.stream().mapToInt(Integer::intValue).toArray(); }
'CodeingTestPrac > Java Coding Test' 카테고리의 다른 글
코테 연습[자바 코테 준비 12일차] stream 연습 (0) 2023.07.07 DS : "()" 문제 ArrayList 말고 Deque (스택 과 큐) ,PriorityQ (0) 2023.07.05 코테 연습[자바 코테 준비 11일차] , BFS(2) ,String Join (0) 2023.07.05 코테 연습[자바 코테 준비 10일차] , LinkedHashSet (0) 2023.07.04 코테 연습[자바 코테 준비 9일차] bfs 완탐(2) (0) 2023.07.04