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

AMUD·2022년 7월 28일
0

Algorithm

목록 보기
19/78

문제


문제 링크

접근

  • 엄청 어려운 문제풀이였다기보다는, 문제 전개를 이해한다면 큰 챌린지는 없다
  • 아래와 같이 풀었는데, 보시다시피 한 범위 보다 작은 마지막 부분은 임의로 붙였다
  • 그런데 다른 분의 풀이를 보니 애초에 마지막 부분까지 반복문을 통해 붙이는 인덱스 오류가 나지 않기 위해 Min()을 이용하셨는데 그 풀이가 더 좋은 것 같다

소스코드

import java.io.*;
import java.util.*;

class Main {
    static int N, M;
    static int[] Group;

    public static void main(String[] args) throws Exception {
        String s = "ababcdcdababcdcd";
        Solution sol = new Solution();

        System.out.println("result : " + sol.solution(s));
    }
}

class Solution {
    public int solution(String s) {
        int answer = -1;

        int size = s.length();

        for (int i = 1; i < size; i++) {
            String result = "";
            String currTarget = s.substring(0, i);
            int currCnt = 1;

            int j = i;
            for (j = i; j + i < size+1; j += i) {
                if (currTarget.equals(s.substring(j, j + i))) {
                        currCnt++;
                    } else {
                        result = currCnt == 1 ? result + currTarget : result + currCnt + currTarget;
                        currCnt = 1;
                        currTarget = s.substring(j, j + i);
                    }
            }
            result = currCnt == 1 ? result + currTarget : result + currCnt + currTarget;
            if (j != size)
                result = result + s.substring(j, size);
            answer = answer == -1 ? result.length() : answer < result.length() ? answer : result.length();
        }

        return answer;
    }
}
profile
210's Velog :: Ambition Makes Us Diligent

0개의 댓글