문제
입출력 예
풀이.
1. 튜플이 만약 (2,1,3,4) 라면 전달받는 s에는 "2"가 4번, "1"이 3번, "3"이 2번, "4"가 1번 등장한다.
ex) 세번째의 tc를 보면 "111"이 두번, " 20"이 1번 등장하므로 순서는 많이 등장한 (111,20) 순으로 튜플을 생성해야한다.
2. 위의 규칙을 생각하고 문자열 s를 "," 와 "{" 와 "}" 를 기준으로 split한다. (해당 과정에서 "" 빈문자열로도 나눠지므로 유의)
3. split한 문자열을 HashMap에 1씩 증가시키며 저장한다.
4. 마지막으로 포함횟수가 많을수록 튜플의 순서에는 앞쪽으로 가야하므로 map의 size에서 포함횟수를 빼서 answer에 저장한다.
코드
import java.util.*;
class Solution {
public static int[] solution(String s) {
HashMap<String, Integer> map = new HashMap<>();
String []t = s.split(",|\\{|\\}");
for(String temp : t){
if(!temp.equals(""))
map.put(temp, map.getOrDefault(temp,0)+1);
}
int[] answer = new int[map.size()];
for(String key : map.keySet()){
answer[map.size() - map.get(key)] = Integer.parseInt(key);
}
return answer;
}
}
'알고리즘 > 백준 Baekjoon' 카테고리의 다른 글
백준 1697번 숨바꼭질(JAVA) - BFS (0) | 2023.03.24 |
---|---|
백준 1926번 그림(JAVA) - BFS (0) | 2023.03.22 |
백준 4963번 섬의 개수(JAVA) - DFS (0) | 2023.02.19 |
백준 1541번 잃어버린 괄호(JAVA) - 그리디 (0) | 2023.02.15 |
백준 2309번 일곱 난쟁이(JAVA) (0) | 2023.01.16 |