예전에 풀때는 testcase를 하나 충족시킬 수 없어 낙담했는데
다시 도전하니 통과했다. 룰루~!
하지만 시간이 아주 많이 걸렸다ㅠㅠ 한시간 반..
익숙하지 않은 java라서 그런것도있지만 그건 다 변명이야~~!!!!~
열심히 하자.
class Solution {
public int solution(String s) {
int answer = s.length();
if(s.length()==1){
return 1;
}
for(int i=1;i<=Math.floor(s.length())/2;i++){
int min=comb(s,i);
if(answer>min){
answer=min;
}
}
return answer;
}
public int comb(String s,int compression){
int point=0;
String target="";
String result="";
int count=1;
for(int i=0;i<s.length();i++){
if(point+compression>=s.length()){//마지막 문자열을 비교해야 할 경우..
int happy=point+compression;
String temp=s.substring(point,s.length());
if(target.equals(temp)){//마지막까지 압축이 된다면.
count++;
result=result+count+temp;
}else{//마지막은 다르다면.
if(count==1){
result=result+target+temp;
}else{
result=result+count+target+temp;
}
}
break;
}else{
String temp=s.substring(point,point+compression);//2,4
if(target.equals(temp)){//압축이 계속 된다면.
count++;
}else{//압축이 더이상 되지않으면.
if(count==1){//압축이 된 기록이 없다면
result=result+target;
}else{//압축이 된 기록이 있다면
result=result+count+target;
}
count=1;
target=temp;
}
point=point+compression;
}
}
return result.length();
}
}