728x90
반응형
package Q1;
import java.util.*;
public class Main {
//1. 빈도수 정렬
public static void main(String[] args) {
//String str="aaAAcccbbbBB";
String str="kdkDKKGkdkgks";
solve(str);
}
public static String solve(String str){
Map<Character, Integer> map = new HashMap<>();
String answer="";
for(char c: str.toCharArray()){
map.put(c, map.getOrDefault(c, 0)+1);
}
//Map.Entry로 List만들어 정렬하기
List<Map.Entry<Character,Integer>> entryList= new LinkedList<>(map.entrySet());
Collections.sort(entryList, ((o1, o2) -> o1.getValue()==o2.getValue()? o1.getKey()-o2.getKey():o2.getValue()-o1.getValue()));
for(Map.Entry<Character,Integer> entry:entryList){
for(int i=0;i<entry.getValue();i++) answer+=entry.getKey();
}
System.out.println(answer);
return answer;
}
}
+) 세련된 풀이
: 입력된 문자열을 해쉬맵을 이용해 카운팅하고, 해쉬맵을 Entry형 List 로 변환한 다음 내림차순 정렬
import java.util.*;
import java.util.Map.Entry;
class Main {
public String solution(String s){
String answer="";
HashMap<Character, Integer> map = new HashMap<>();
for(char x : s.toCharArray()){
map.put(x, map.getOrDefault(x, 0)+1);
}
List<Entry<Character, Integer>> list = new ArrayList<Entry<Character, Integer>>(map.entrySet());
Collections.sort(list, new Comparator<Entry<Character, Integer>>(){
public int compare(Entry<Character, Integer> a, Entry<Character, Integer> b){
return b.getValue().compareTo(a.getValue());
}
});
for(Entry<Character, Integer> x : list){
for(int i=0; i<x.getValue(); i++) answer+=x.getKey();
}
return answer;
}
public static void main(String[] args){
Main T = new Main();
System.out.println(T.solution("aaAAcccbbbBB"));//bbbcccaaAABB
System.out.println(T.solution("kdkDKKGkdkgks"));//kkkkkddKKsDGg
System.out.println(T.solution("ckdowiskjgwigAGD"));//wwggiikkAcsdDGjo
}
}
728x90
반응형
'Java > Java 알고리즘 인프런' 카테고리의 다른 글
3. 그래프 최대점수 (+DFS) (0) | 2022.11.10 |
---|---|
2. 카드 점수 (+슬라이딩 윈도우) (0) | 2022.11.10 |
[Ch.09 - Greedy] 07. 원더랜드 (+ 최소스패닝트리 : 크루스칼, Union & Find) (1) | 2022.08.20 |
[Ch.09 - Greedy] 06. 친구인가 (+ Disjoint-Set : Union & Find) (0) | 2022.08.20 |
[Ch.09 - Greedy] 05. 다익스트라 알고리즘 (0) | 2022.08.17 |