NOTE/프로그래머스
Level2 - 문자열 압축
m-inz
2022. 3. 14. 19:35
class Solution {
public int solution(String s) {
int min = Integer.MAX_VALUE; //answer;
if(s.length() == 1) return 1;//1인경우 할 필요x
for(int i =1; i<=s.length()/2; i++){
String str=""; //압축한 문자열
String prev=s.substring(0,i); //이전 문자열
int count = 1;
for(int j =i; j<=s.length()-i; j+=i){
String now = s.substring(j,j+i);
if(prev.equals(now)){ //이렇게 함으로써 뒤까지 다검사
count++;
continue;
}
if(count>1){ //위에서 안걸렸는데 1넘은 경우는 해당 문자 반복 끝난거
str += count+prev;
count = 1;
}else{
str +=prev;
}
prev=now; //뒤에께 이제 현재 비교하는 값이엇삼~
}
//맨 마지막 경우 - 마지막에 못 붙인애들 처리~
if(count>1){
str+=count+prev;
count=1;
}else{
str+=prev;
}
//비교 못한애들 붙임~
if(s.length()%i!=0){
str+=s.substring(s.length()-s.length()%i,s.length());
}
if(str.length()<min) min= str.length();
}
return min;
}
}
다음에 다시 풀어봐야겠다,,