알고리즘/프로그래머스

[프로그래머스]JAVA - Level 2. 문자열 압축

K.두부 2022. 4. 17. 14:33
반응형

https://school.programmers.co.kr/learn/courses/30/lessons/60057

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

class Solution {
    public int solution(String s) {
        int answer = Integer.MAX_VALUE;
        int slen = s.length();
        
        if (slen == 1) return 1; // 문자열 길이가 1일 경우
        
        for (int i=1; i<=slen/2; i++) {
            String word1 = s.substring(0,i); // 첫번째 문자열
            String word2 = ""; 
            String temp = "";
            int cnt = 1;
            
            for (int j=i; j<=slen; j+=i) {
                int one = j;
                int two = j+i > slen ? slen : j+i;
                
                word2 = s.substring(one, two); // 두번째 문자열
                
                if (word1.equals(word2)) cnt++; // 같을 경우 숫자 증가
                else {
                    if (cnt > 1) temp += cnt; // 다를 경우 숫자 입력 및 전 단어 입력
                    temp += word1;
                    cnt = 1; // 숫자 초기화
                }
                
                word1 = word2; 
            }
            
            // 마지막 문자열 입력
            if (cnt > 1) temp += cnt;
            temp += word1;
            answer = Math.min(temp.length(), answer);
        }
        
        return answer;
    }
}
반응형