[프로그래머스] 문자열압축
2020. 3. 30. 14:38ㆍ프로그래머스/카카오
import java.util.*;
class Solution {
public int solution(String s) {
int answer = s.length();
for(int i=0; i<s.length()-1; i++){
List<String> temp = new ArrayList<>();
for(int j=0; j<s.length(); j++){
if(j+i+1 > s.length()){
String flag = s.substring(j);
temp.add(flag);
break;
}
else{
String flag=s.substring(j,j+(i+1));
temp.add(flag);
j=j+i;
}
} // i개씩 쪼갠 문자열 배열 완성
answer = Math.min(answer,count(temp));
}
return answer;
}
public int count(List<String> temp){
String flag = temp.get(0);
int press = 1;
String result ="";
int retlen =0;
for(int i=1; i<temp.size(); i++){
if(temp.get(i).equals(flag)){
press ++;
}
else{
if(press!=1){
result += Integer.toString(press) + flag;
flag=temp.get(i);
press=1;
}else{
result += flag;
flag = temp.get(i);
press=1;
}
}
if(i==temp.size()-1){
if(press!=1){
result += Integer.toString(press) + flag;
}
else{
result += flag;
}
}
}
retlen = result.length();
return retlen;
}
}
count함수는 갯수별로 쪼개진 리스트를 가져와서 새로운 문자열을 만들어 그 길이를 반환해주는 메소드이다.
문자열의 길이를 변화시키면서 그 잘려진 문자열 리스트를 재조합하여 길이를 각각 구하여 최소값을 업데이트 시키는 방식을 사용하였다.
'프로그래머스 > 카카오' 카테고리의 다른 글
[프로그래머스] [1차] 뉴스 클러스터링 (0) | 2020.04.01 |
---|---|
[프로그래머스] 크레인 인형뽑기 (0) | 2020.04.01 |
[프로그래머스] [1차] 다트게임 (0) | 2020.03.31 |
[프로그래머스] 비밀지도[1차] (0) | 2020.03.25 |
[프로그래머스] 실패율 (0) | 2020.03.24 |