알고리즘/문제

개미수열

허정주 2022. 10. 28. 04:22
public static int solution(int n, int num) {
        int answer = 0;
        String[] s = String.valueOf(num).split("");
        sort(s);

        StringBuilder sb = new StringBuilder();
        for(String ss : s) {
            sb.append(ss);
        }
        String[] temp = sb.toString().split("");
        
        
        for(int i = 0; i <= n; i++) {
            if(i == n) {
                String nnn = sb.toString();
                answer = Integer.valueOf(nnn);
                return answer % 10004;
            }

            s = sb.toString().split("");
            sort(s);
    
            sb = new StringBuilder();
            for(String ss : s) {
                sb.append(ss);
            }

            temp = sb.toString().split("");
            String token = temp[0];
            sb = new StringBuilder();
            int cnt = 0;
            for(int j = 0; j < temp.length; j++) {
                if(token.equals(temp[j])){
                    cnt++;
                } else {
                    sb.append(token+""+cnt);
                    token = temp[j];
                    cnt = 1;
                }
                
            }
            if(cnt >= 1) {
                sb.append(token + "" + cnt);
                cnt = 1;
            }
        }
        return answer;
    }

    public static String[] sort(String[] s) {
        int[] ii = new int[s.length];
        for(int i = 0; i < s.length; i++) {
            ii[i] = Integer.valueOf(s[i]);
        }
        Arrays.sort(ii);
        for(int i = 0; i < s.length; i++) {
            s[i] = String.valueOf(ii[i]);
        }

        return s;
    }