프로그래머스 - 문자열 압축 - Java

chaemin·2024년 3월 14일
0

프로그래머스

목록 보기
6/64

1. 문제

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

2. 풀이

문제에 제시된대로 구현해주면 된다.
1. s.length() / 2만큼만 나눈다.
2. 문자열 자를 길이 step을 1~s.length() / 2만큼 돌면서 가장 짧은 길이를 구한다.

2-1. ✨핵심 Point

for(int k = j; k < j + step; k++) {
	if(k < s.length())
	next += s.charAt(k);
}

문자열이 aabbaccc이고 3개로 자른다고 하면
aab bac cc
뒤에 cc는 두개밖에 되지 않는다. 따라서 위에 for문을 통해서
k < s.length()일 경우만 next에 더해준다.

3. 코드

class Solution {
    public int solution(String s) {
        int answer = s.length();
        
        for(int step = 1; step < s.length() / 2 + 1; step++) {
            
            String prev = s.substring(0, step);
            String answer_prev = "";
            int count = 1;
            
            for(int j = step; j < s.length(); j += step) {
                
                String next = "";
                
                for(int k = j; k < j + step; k++) {
                    if(k < s.length())
                        next += s.charAt(k);
                }
                
                if(prev.equals(next)){
                    count++;
                }
                
                else {
                    
                    answer_prev += (count >= 2) ? count + prev : prev;
                    
                    count = 1;
                    
                    prev = next;
                }
            }
            
            answer_prev += (count >= 2) ? count + prev : prev;
            
            answer = Math.min(answer, answer_prev.length());
        }
        return answer;
    }
}

0개의 댓글