728x90
package prog;
public class 문자열_압축 {
public static void main(String[] args) {
Solution_문자열_압축 s = new Solution_문자열_압축();
//System.out.println(s.solution("aabbaccc"));
System.out.println(s.solution("a"));
System.out.println(s.solution("ababcdcdababcdcd"));
}
}
class Solution_문자열_압축{
public int solution(String s) {
if(s.length()==1){
return 1;
}
int[] answer = new int[s.length()/2+1];
for (int i = 1; i <= s.length()/2; i++) {
String tmpString="";
int start = 0;
int middle = i;
int end = s.length();
String tmp = s.substring(start,middle);
int cnt = 0;
while(middle<=end){
if(tmp.equals(s.substring(start,middle))){
cnt++;
}
else{
tmpString = addString(tmpString,cnt,tmp);
tmp = s.substring(start,middle);
cnt=0;
continue;
}
tmp = s.substring(start,middle);
start+=i;
middle+=i;
}
// tmp 문자열 더하기
tmpString=addString(tmpString,cnt,tmp);
//꼬투리 문자열 더하기
tmpString+=s.substring(s.length()-s.length()%i, s.length());
answer[i] = tmpString.length();
}
int min=Integer.MAX_VALUE;
for (int i = 0; i < answer.length; i++) {
if(answer[i]!=0)min=Math.min(min,answer[i]);
}
return min;
}
public static String addString(String orign,int cnt, String attach ){
if(cnt==1){
orign+=attach;
}
else{
orign+=(cnt+attach);
}
return orign;
}
}
728x90
'알고리즘 > 프로그래머스' 카테고리의 다른 글
카카오 프렌즈 컬러링북 (0) | 2021.09.03 |
---|---|
직업군 추천하기 (0) | 2021.09.03 |
오픈채팅방 (0) | 2021.09.03 |
2주차 (0) | 2021.08.31 |
프로그래머스 거리두기 확인하기 (0) | 2021.08.30 |