[프로그래머스] 64065. 튜플
문제 링크
풀이 과정
집합 기호로 표현된 문자열을 튜플로 변환하는 문제입니다. 주어진 집합들에서 빈번하게 등장하는 숫자들의 순서로 튜플의 원소를 구성하게 됩니다. 따라서, 등장한 숫자들의 횟수를 누적시켜주고, 이 값을 우선순위 큐에 넣어 내림차순 정렬하여 리스트에 담아 리턴했습니다.
코드
import java.util.ArrayList;
import java.util.Comparator;
import java.util.List;
import java.util.PriorityQueue;
public class Main {
public static List solution(String s) {
List<Integer> answer = new ArrayList<>();
int[] cnt = new int[100001];
s = s.replace("{", "").replace("}", "");
String[] splited = s.split(",");
for (String str : splited) {
cnt[Integer.parseInt(str)]++;
}
PriorityQueue<int[]> pq = new PriorityQueue<>(new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
return o2[1] - o1[1];
}
});
for (int i = 0; i < cnt.length; i++) {
if (cnt[i] == 0) continue;
pq.add(new int[]{i, cnt[i]});
}
while (!pq.isEmpty()) answer.add(pq.poll()[0]);
return answer;
}
public static void main(String[] args) {
solution("{{2},{2,1},{2,1,3},{2,1,3,4}}");
// solution("{{1,2,3},{2,1},{1,2,4,3},{2}}");
// solution("{{20,111},{111}}");
// solution("{{123}}");
// solution("{{4,2,3},{3},{2,3,4,1},{2,3}}");
}
}
댓글남기기