맡과 리μ€νΈλ₯Ό νμ©ν΄μ νμλ€.
λ¨Όμ μ½κ² μκ°ν μ μλ μμ΄λμ΄κ°, νΉμ μ«μκ° λ±μ₯νλ νμλ₯Ό ꡬνκ³ λ±μ₯μ λ§μ΄ νλ μμλ‘ λμ΄νλ©΄ λ΅μ΄ λ κ²μ΄λ€.
"{{2},{2,1},{2,1,3},{2,1,3,4}}"
μ μμ λ₯Ό μμλ‘ μ€λͺ ν΄λ³΄κ² λ€.
int [] result = Arrays.stream(s.replace("{","").replace("}","").split(","))
.mapToInt(Integer::valueOf)
.toArray();
μ λ‘μ§μ ν΅ν΄
[2, 2, 1, 2, 1, 3, 2, 1, 3, 4] μ κ°μ int λ°°μ΄λ‘ μΆμΆν μ μλ€.
μ΄ λ°°μ΄μ Mapμ μ΄μ©ν΄μ μΉ΄μ΄ν μ νλ€.
HashMap<Integer,Integer> map = new HashMap<>();
for(int num : result){
map.put(num,map.getOrDefault(num,0)+1);
}
{1=3, 2=4, 3=2, 4=1}
κ·Έλ¬λ©΄ μμ κ°μ κ²°κ³Όλ₯Ό μ»μ μ μλ€.
μ΄μ λ±μ₯ν μμλλ‘ λμ΄νλ μμ μ νλ©΄ λλ€.
int[] answer = new int[map.size()];
List<int[]> list = new ArrayList<>();
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
list.add(new int[]{entry.getKey(),entry.getValue()});
}
Collections.sort(list,(a,b)-> b[1]-a[1]);
for(int i=0;i<answer.length;i++){
answer[i]=list.get(i)[0];
}
리μ€νΈμ μΆκ°ν λ€, λλ€μμΌλ‘ comparatorλ₯Ό μ μν΄μ νμ κΈ°μ€μΌλ‘ λ΄λ¦Όμ°¨μ λλλ‘ νμλ€.
κ·Έλ¦¬κ³ μ λ΅ λ°°μ΄μ μμλλ‘ μΆκ°ν΄μ£Όλ©΄ λμ΄λ€.
μ΅μ’ μ½λ
import java.util.*;
class Solution {
public int[] solution(String s) {
int [] result = Arrays.stream(s.replace("{","").replace("}","").split(","))
.mapToInt(Integer::valueOf)
.toArray();
HashMap<Integer,Integer> map = new HashMap<>();
for(int num : result){
map.put(num,map.getOrDefault(num,0)+1);
}
int[] answer = new int[map.size()];
List<int[]> list = new ArrayList<>();
for(Map.Entry<Integer,Integer> entry : map.entrySet()){
list.add(new int[]{entry.getKey(),entry.getValue()});
}
Collections.sort(list,(a,b)-> b[1]-a[1]);
for(int i=0;i<answer.length;i++){
answer[i]=list.get(i)[0];
}
return answer;
}
}