Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

forDevLife

[프로그래머스] 문자열 압축 본문

알고리즘

[프로그래머스] 문자열 압축

JH_Lucid 2021. 7. 9. 10:56

내부 처리가 좀 복잡하다.

import org.junit.Test;

public class Solution {
    public int solution(String s) {
        int answer = Integer.MAX_VALUE;

        int repeat = s.length() / 2;
        int L = s.length();

        if(s.length() == 1) {
            return answer = 1;
        }

        for(int i=0; i<repeat; i++) {
            int idx = 0;
            int size = i+1;
            StringBuilder sb = new StringBuilder();
            String tmp1 = s.substring(0, size);
            int cnt = 1;

            while(true) {
                idx += size;
                if(L-idx >= size) {
                    String tmp2 = s.substring(idx, idx + size);
                    if(tmp1.equals(tmp2)) {
                        cnt++;
                        continue;
                    }
                    //앞과 다를 경우,
                    if(cnt > 1) {
                        sb.append(cnt).append(tmp1);
                        cnt = 1;
                        tmp1 = tmp2;
                        continue;
                    } else {
                        sb.append(tmp1);
                        cnt = 1;
                        tmp1 = tmp2;
                        continue;
                    }
                }
                if(cnt > 1) {
                    sb.append(cnt);
                }
                sb.append(s.substring(idx - size, L));
                break;
            }
            answer = Math.min(answer, sb.length());
        }
        return answer;
    }

    @Test
    public void 정답() {
        String s = "b";
        String s1 = "ababcdcdababcdcd";
        String s2 = "abcabcdede";
        String s3 = "abcabcabcabcdededededede";
        String s4 = "xababcdcdababcdcd";
        System.out.println(solution(s));
    }

}

'알고리즘' 카테고리의 다른 글

[백준] 2178 - 미로탐색  (0) 2021.07.15
[백준] 4485 - 녹색 옷 입은 애가 젤다지?  (0) 2021.07.10
[프로그래머스] 튜플  (0) 2021.07.08
[프로그래머스] 기능개발  (0) 2021.07.08
[프로그래머스] 오픈채팅방  (0) 2021.07.07
Comments