알고리즘/프로그래머스

튜플

베리영young 2025. 2. 23. 00:56

사용 알고리즘: 자료구조-큐?맵?

사용 언어: java

 

import java.util.*;

class Solution {
    Map<Integer, Integer> map = new HashMap<>();
    
    public int[] solution(String s) {
        //구분자 이거 무야
        String[] s_arr = s.split("[,\\{\\}]+");
        for(String num : s_arr) {
            if(num.equals("")) continue;
            int n = Integer.parseInt(num);
            map.put(n, map.getOrDefault(n, 0) + 1);
        }
        
        //
        int[] answer = new int[map.size()];
        Queue<int[]> pq = new PriorityQueue<>((a,b) -> b[1] - a[1]);
        for(int key : map.keySet()) {
            pq.add(new int[] {key, map.get(key)});
        }
        
        int idx = 0;
        while(!pq.isEmpty()) {
            answer[idx++] = pq.poll()[0];
        }
        return answer;
    }
}

 

문제가 잘 이해가 안 갔는데..

답으로 리턴될 예상 튜플에서

0번째 원소값은 모든 부분집합에 포함된다.

1번째 원소값은 사이즈가 2 이상인 모든 부분집합에 포함된다.

2번째 원소값은 사이즈가 3 이상인 ~

 

이런 식으로 보자면,

모든 원소값의 개수를 구해서, 가장 많이 있는 원소값부터 튜플의 앞쪽 원소가 된다.

 

p.s

구분자 여러 개 쓰는 건 참 익숙해지지 않는군...

코딩 테스트에서 구분자를 여러 개 쓰는 문제는 본 적 없는 거 같긴 하지만...

'알고리즘 > 프로그래머스' 카테고리의 다른 글

[1차] 캐시  (0) 2025.03.02
불량 사용자 (자료구조의 앝은 복사 vs 깊은 복사)  (0) 2025.02.23
프로세스  (0) 2025.02.23
주차 요금 계산  (0) 2025.02.22
양궁대회  (1) 2025.02.21