문제보기
https://school.programmers.co.kr/learn/courses/30/lessons/64065
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 풀이
public class Test {
public int[] solution(String s) {
s = s.substring(1, s.length());
ArrayList<String> list = new ArrayList<>();
String tmp = "";
for(int i = 0; i < s.length(); i++) {
if(s.charAt(i) == '{') {
} else if(s.charAt(i) == '}') {
list.add(tmp);
tmp = "";
i++;
} else {
tmp += s.charAt(i);
}
}
HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
for(int i = 0; i < list.size(); i++) {
String[] str = list.get(i).split(",");
for(int j = 0; j < str.length; j++) {
int chk = Integer.parseInt(str[j]);
map.put(chk, map.getOrDefault(chk, 0)+1);
}
}
List<Map.Entry<Integer, Integer>> entryList = new LinkedList<Map.Entry<Integer,Integer>>(map.entrySet());
entryList.sort(new Comparator<Map.Entry<Integer, Integer>>() {
@Override
public int compare(Entry<Integer, Integer> o1, Entry<Integer, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
int[] answer = new int [map.size()];
int cnt = 0;
for(Map.Entry<Integer, Integer> entry : entryList) {
answer[cnt] = entry.getKey();
System.out.println(cnt + " : " + answer[cnt]);
cnt++;
}
return answer;
}
public static void main(String[] args) {
Test t = new Test();
String s = "{{2},{2,1},{2,1,3},{2,1,3,4}}";
int[] arr = t.solution(s);
for(int i : arr) {
System.out.println(i);
}
}
}
** HashMap value 값으로 정렬하기
1. 오름차순
HashMap<String, Integer> map = new HashMap<>();
map.put("a", 5);
map.put("b", 1);
map.put("c", 0);
map.put("d", 6);
List<Map.Entry<String, Integer>> entryList = new LinkedList<Map.Entry<String, Integer>>(map.entrySet());
//오름차순
entryList.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o1.getValue() - o2.getValue();
}
});
for(Map.Entry<String, Integer> entry : entryList) {
System.out.println(entry.getKey() + " : " + entry.getValue() );
}
2. 내림차순
entryList.sort(new Comparator<Map.Entry<String, Integer>>() {
@Override
public int compare(Entry<String, Integer> o1, Entry<String, Integer> o2) {
return o2.getValue() - o1.getValue();
}
});
'코딩테스트 > programmers' 카테고리의 다른 글
[JAVA] 3진법 뒤집기 (0) | 2022.09.16 |
---|---|
문자열 내 마음대로 정렬하기 (0) | 2022.08.24 |
올바른 괄호 - java (0) | 2022.08.16 |
신고 결과 받기 (0) | 2022.08.13 |
로또의 최고 순위와 최저 순위 (0) | 2022.06.12 |