문자열 파싱
https://school.programmers.co.kr/learn/courses/30/lessons/60057
class Solution {
public int solution(String s) {
int answer = zipString(s);
return answer;
}
public int zipString(String s) {
int minLength = s.length();
for(int splitLength=1; splitLength<=s.length()/2; splitLength++) {
int equalCnt = 1;
String leftStr = s.substring(0, splitLength);
StringBuilder sb = new StringBuilder();
// 가능한 압축 문자열 길이 순회
for (int right = splitLength; right <= s.length(); right += splitLength) {
// 압축 문자열 길이로 나눠지지 않는 경우를 고려
int endIdx = Math.min(right + splitLength, s.length());
String rightStr = s.substring(right, endIdx);
if (leftStr.equals(rightStr)) {
equalCnt++;
} else { // 다를 때마다 sb에 저장
if (equalCnt > 1) {
sb.append(equalCnt);
}
sb.append(leftStr);
leftStr = rightStr;
equalCnt = 1;
}
}
if (equalCnt > 1) {
sb.append(equalCnt);
}
sb.append(leftStr);
minLength = Math.min(minLength, sb.length());
}
return minLength;
}
}
1시간 30분
left, right 두 개의 포인터를 한 칸씩 이동하며 가능한 압축 문자열을 찾는 문제로 착각했습니다… 😭
입출력 예시에 있는 조건을 보지 못해서 시간이 오래 소요됐네요.