[프로그래머스] 64065. 튜플

최대 1 분 소요

문제 링크

[프로그래머스] 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}}");
    }
}

카테고리:

업데이트:

댓글남기기