2020 카카오공채 문자열 압축
in Computer Science on Algorithm
문제
class Solution {
public int solution(String s) {
int answer = s.length();
for (int i = 1; i <= s.length() / 2; i++) {
StringBuilder result = new StringBuilder();
String prev = s.substring(0, i);
int hit = 1;
for (int j = i; j < s.length(); j += i) {
int len = Math.min(j + i, s.length());
String substring = s.substring(j, len);
if (prev.equals(substring)) {
hit++;
} else {
if (hit == 1) {
result.append(prev);
} else {
result.append(hit).append(prev);
}
prev = substring;
hit = 1;
}
}
if (hit != 1) {
result.append(hit).append(prev);
} else {
result.append(prev);
}
answer = Math.min(result.length(), answer);
}
return answer;
}
}
풀이 방법은 간단하다.
현재 값인 substring
과 이전 값인 prev
를 비교해가면서 같다면 hit
를 증가시키고 다르다면 result
에 붙여줬다.
Intellij에서 String에 값을 더하려고 하면 알아서 StringBuilder로 바꿔준다던지, substring을 반복적으로 사용하니까 따로 변수로 빼라고 알려준다던지 하는 기능 덕분에 코드가 좀 더 깔끔해졌다.