https://programmers.co.kr/learn/courses/30/lessons/42579
ํ๋ก๊ทธ๋๋จธ์ค ์ฝ๋ฉํ ์คํธ ๊ณ ๋์ Kit ๋ฒ ์คํธ์จ๋ฒ ๋ฌธ์ ํ์ด์ด๋ค.
๋ฌธ์ ๊ฐ ๊น๋ํ๊ฒ ํ๋ฆฌ์ง๋ ์์๋๋ฐ ์ ๋ ฌ๋ฒ์ ๋ฐฐ์ฐ๋๋ฐ ๋์์ด ๋์๋ ๋ฌธ์ ์ด๋ค.
import java.util.*;
class Solution {
public int[] solution(String[] genres, int[] plays) {
// ์ฅ๋ฅด, ์ฅ๋ฅด๋ณ ์ด ์ฌ์ํ์
Map<String, Integer> playsMap = new HashMap<>();
for (int i = 0; i < genres.length; i++) {
playsMap.put(genres[i], playsMap.getOrDefault(genres[i], 0) + plays[i]);
}
// ์ฅ๋ฅด, ์ฅ๋ฅด๋ณ ์ด ์ฌ์ํ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ๋ ฌ (๊ฐ์ฅ ๋ง์ด ์ฌ์๋ ์ฅ๋ฅด -> ๊ฐ์ฅ ์ ๊ฒ ์ฌ์๋ ์ฅ๋ฅด)
List<String> genresList = new ArrayList<>(playsMap.keySet());
Collections.sort(genresList, (o1, o2) -> (playsMap.get(o2).compareTo(playsMap.get(o1))));
// ์ฅ๋ฅด, ์ฅ๋ฅด ๋ด ๋
ธ๋ ๊ณ ์ ๋ฒํธ ๋ชฉ๋ก
Map<String, List<Integer>> numMap = new HashMap<>();
for (int i = 0; i < genres.length; i++) {
List<Integer> temp = new ArrayList<>();
if (numMap.containsKey(genres[i])) {
temp = numMap.get(genres[i]);
temp.add(i);
numMap.put(genres[i], temp);
} else {
temp.add(i);
numMap.put(genres[i], temp);
}
}
List<Integer> result = new ArrayList<>();
for (String genre : genresList) {
int idx = 0;
// ์ฅ๋ฅด ๋ด์์ ๋ง์ด ์ฌ์๋ ์์๋๋ก ์ ๋ ฌ (๊ฐ์ ๊ฒฝ์ฐ ๊ณ ์ ๋ฒํธ๊ฐ ๋ฎ์ ๊ฑฐ ๋จผ์ )
Collections.sort(numMap.get(genre), (o1, o2) -> (plays[o1] == plays[o2] ? o1 - o2 : plays[o2] - plays[o1]));
for (int n : numMap.get(genre)) {
if (idx < 2) {
result.add(n); // ์ฅ๋ฅด ๋น 2๊ฐ๋ง ๊ฒฐ๊ณผ์ ์ถ๊ฐ
}
idx++;
}
}
return result.stream().mapToInt(i -> i).toArray();
}
}
'๊ฐ๋ฐ > ์๋ฃ๊ตฌ์กฐ & ์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ฆฐํฐ (Java) (0) | 2022.01.16 |
---|---|
๊ธฐ๋ฅ๊ฐ๋ฐ (Java) (0) | 2021.11.12 |
์์ฅ (Java) (0) | 2021.11.01 |
์ ํ๋ฒํธ ๋ชฉ๋ก (Java) (0) | 2021.11.01 |
์์ฃผํ์ง ๋ชปํ ์ ์ (Java) (0) | 2021.11.01 |
๋๊ธ