🖇️ 문제 링크
📝 문제 분석
문자열을 1개 단위부터 n/2개 단위까지 전부 압축해보고, 가장 짧은 길이를 리턴한다.
⌨️ 코드
class Solution {
public int solution(String s) {
int n = s.length();
int ans = n;
// 1개 단위부터 n / 2개 단위까지 잘라본다
for(int i = 1; i <= n / 2; i++) {
String prev = "", next;
int cnt = 1, len = 0;
for(int j = 0; j < n; j += i) {
if(j + i >= n)
next = s.substring(j);
else
next = s.substring(j, j + i);
if(prev.equals(next))
cnt++;
else {
len += next.length();
len += chk(cnt);
prev = next;
cnt = 1;
}
}
// 마지막 문자열까지 같았을 경우
len += chk(cnt);
ans = Math.min(ans, len);
}
return ans;
}
int chk(int cnt) {
if(cnt > 1 && cnt < 10) return 1;
else if(cnt >= 10) return 2;
return 0;
}
}
Uploaded by Notion2Tistory v1.1.0