본문 바로가기
알고리즘/백준 Baekjoon

(LEVEL 2)프로그래머스 - 튜플 (JAVA) [2019 카카오 개발자 겨울 인턴십]

by 꾸준함 2023. 3. 13.

문제


입출력 예


 

풀이.

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;
    }
}