1. ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/42579
2. ํ์ด
1. ์ฅ๋ฅด ์ฌ์ํ์ ๋ง์ ์์
2. ๋ ธ๋ ์ฌ์ํ์ ๋ง์ ์์
3. ๊ณ ์ ๋ฒํธ ์์ ์์
map 2๊ฐ๋ฅผ ๋๊ณ
- ๋ ธ๋ ์ ๋ณด map (ํด์๋งต์ ํด์๋งต)
- ์ฌ์ํ์ map
์ฅ๋ฅด์ key๊ฐ๋ง ๋ฝ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ ๋, ์ ๋ ฌ ์กฐ๊ฑด์ ์ฅ๋ฅด ์ฌ์ํ์๊ฐ ๋ง์ ์ ์กฐ๊ฑด ์ถ๊ฐ
๋ ธ๋์ key๊ฐ๋ง ๋ฝ์ ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ ๋, ์ ๋ ฌ ์กฐ๊ฑด์ ๋ ธ๋ ์ฌ์ํ์๊ฐ ๋ง์ ์ ์กฐ๊ฑด ์ถ๊ฐ
answer ๋ฆฌ์คํธ์ ๊ฐ์ ๋๋๋๋ก add (๋จ, 2๊ฐ๊น์ง)
์ ์ํ ์ ์
List<Integer>๋ฅผ int[] ๋ก ๋งตํํ๋ ๋ฐฉ๋ฒ์ธ๋ฐ,
stream๊ณผ mapToInt๋ฅผ ์ฌ์ฉํ์๋ค.
1. mapToInt ์๋ฆฌ
2. ํด์๋งต์์ value๊ฐ map ํํ๋ฉด putํ์ ๋ ์ด๋ฏธ key๊ฐ ์์ด๋ value ์ ๋ฐ์ดํธ๊ฐ ์๋๋ผ ์ค๋ณต๋๋ key์ ์๋ก์ด value๊ฐ ์ถ๊ฐ๋๋๊ฑด๊ฐ? value ์์ key๋ ์ฒดํฌํ๋๊ฑด๊ฐ?
3. ์ฝ๋
import java.util.*;
import java.io.*;
class Solution {
public int[] solution(String[] genres, int[] plays) {
List<Integer> answer = new ArrayList<> ();
Map<String, Integer> countMap = new HashMap<> ();
Map<String, Map<Integer, Integer>> musicMap = new HashMap <> ();
for (int i=0; i<genres.length; i++) {
if (countMap.containsKey(genres[i])) {
countMap.put(genres[i], countMap.get(genres[i]) + plays[i]);
musicMap.get(genres[i]).put(i, plays[i]);
}
else {
Map<Integer, Integer> map = new HashMap<> ();
map.put(i, plays[i]);
countMap.put(genres[i], plays[i]);
musicMap.put(genres[i], map);
}
}
List<String> genreList = new ArrayList<> (countMap.keySet());
Collections.sort(genreList, (s1, s2) -> countMap.get(s2) - countMap.get(s1));
for (String genre : genreList) {
Map<Integer, Integer> music = (HashMap<Integer, Integer>) musicMap.get(genre);
List<Integer> musicList = new ArrayList<> (music.keySet());
Collections.sort(musicList, (s1, s2) -> music.get(s2) - music.get(s1));
answer.add(musicList.get(0));
if (musicList.size() > 1) {
answer.add(musicList.get(1));
}
}
return answer.stream()
.mapToInt(i->i)
.toArray();
}
}
4. ์ฌ๋ด
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Programmers] N๊ฐ์ ์ต์๊ณต๋ฐฐ์ - Java (0) | 2023.08.10 |
---|---|
2023 ํ ์ค ๋ฅ์คํธ ์ฑ๋ฆฐ์ง server ์ง๊ตฐ ์ฝ๋ฉํ ์คํธ ํ๊ธฐ (0) | 2023.07.09 |
[Softeer] ์ฑ์ ํ๊ท - Java (0) | 2023.04.17 |