[Programmers]-문자열 압축
문제
문자열을 1~문자열길이/2 사이 단위로 잘라 압축해 가장작은 문자열길이를 반환하는 문제이다.
코드
class Solution {
public int solution(String s) {
int answer = s.length();
for(int i =1;i<=s.length()/2;i++){//단위1~
String str = "";//각단위로 나눠 합친 문자열을 담을 공간
String temp = s.substring(0,i);//나눈 임시 문자단위
int count = 1;
for(int j=1;j<s.length()/i;j++){
if(s.substring(i*j,i*j+i).equals(temp)){//같을경우
count++;
}
else{//같지 않을 경우
if(count>1) str += count+temp;
else str += temp;
temp = s.substring(i*j,i*j+i);//초기화
count = 1;
}
}
if(count>1) str += count+temp;//마지막에 덜 추가한 부분
else str += temp;
if(s.length() % i!=0)//단위로 나누어떨어지지 않을경우 나머지부분 추가
str += s.substring(s.length()-s.length()%i,s.length());
answer = answer >= str.length() ? str.length() : answer;//최소값 넣기
}
return answer;
}
}
코드 설명
주석 설명.
요약
- substring() 의 활용도
- 한번도 건드리지 않은 유형은 어려울 뿐이다. 들어다보며 공부하기.