[프로그래머스] [LV2] 튜플
업데이트:
📚 프린터
링크📎 : https://programmers.co.kr/learn/courses/30/lessons/64065
난이도 ⭐️⭐️
📖 문제
📝 내 풀이
import java.util.*;
class Solution {
public int[] solution(String s) {
int[] answer = {};
HashMap<Integer, Integer> hm = new HashMap<Integer, Integer>();
s = s.substring(1, s.length()-1);
while(s.length()!=1){
String[] temp = s.substring(1,s.indexOf("}")).split(",");
for(String s1 : temp){
if(!hm.containsKey(Integer.parseInt(s1)))
hm.put(Integer.parseInt(s1),1);
else
hm.put(Integer.parseInt(s1), hm.get(Integer.parseInt(s1)) + 1);
}
s = s.substring(s.indexOf("}"), s.length());
if(s.length()==1) break;
else s = s.substring(s.indexOf("{"), s.length());
}
List<Integer> keySetList = new ArrayList<>(hm.keySet());
// 내림차순
Collections.sort(keySetList, (o1, o2) -> (hm.get(o2).compareTo(hm.get(o1))));
answer = new int[keySetList.size()];
int count = 0;
for(Integer key : keySetList) {
answer[count++] = key;
}
return answer;
}
}
풀이가 너무 더럽다..
👊🏻 전략
- split으로 각 원소별로 끊는다.
- 최빈 원소일 수록 앞으로 배치되면 된다.
- hashmap의 키값으로 원소를 넣고 value로 빈도수 체크
- 내림차순으로 정렬하여 반환한다.
끝-!
댓글남기기