[Programmers] 베스트앨범 - 해시

동민·2021년 3월 11일
0
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.TreeMap;

// 베스트앨범 - 해시
public class BestAlbum {
	public int[] solution(String[] genres, int[] plays) {
		ArrayList<Integer> answer = new ArrayList<>();
		ArrayList<Integer> playsList = new ArrayList<>();
		LinkedHashMap<String, Integer> sumMap = new LinkedHashMap<>();
		TreeMap<Integer, String> rankMap = new TreeMap<>(Collections.reverseOrder());

		for (int i = 0; i < plays.length; i++) {
			playsList.add(plays[i]);
			if (sumMap.containsKey(genres[i])) {
				sumMap.put(genres[i], sumMap.get(genres[i]) + plays[i]);
			} else {
				sumMap.put(genres[i], plays[i]);
			}
		}
		for (String key : sumMap.keySet()) {
			rankMap.put(sumMap.get(key), key);
		}

		ArrayList<Integer> playsSortList = new ArrayList<>(playsList);
		Collections.sort(playsSortList);
		Collections.reverse(playsSortList);
		int count = 0;
		for (int rkey : rankMap.keySet()) {
			for (int play : playsSortList) {
				if (playsList.contains(play) && genres[playsList.indexOf(play)].equals(rankMap.get(rkey))) {
					count++;
					answer.add(playsList.indexOf(play));
					playsList.set(playsList.indexOf(play), 0);
				}
				if (count == 2) {
					break;
				}
			}
			count = 0;
		}
		return answer.stream().mapToInt(i -> i.intValue()).toArray();
	}
}
  • TreeMap Key 내림차순 정렬
TreeMap<Key, Value> map = new TreeMap<>(Collections.reverseOrder());
profile
BE Developer

0개의 댓글