forDevLife
[프로그래머스] 문자열 압축 본문
내부 처리가 좀 복잡하다.
import org.junit.Test;
public class Solution {
public int solution(String s) {
int answer = Integer.MAX_VALUE;
int repeat = s.length() / 2;
int L = s.length();
if(s.length() == 1) {
return answer = 1;
}
for(int i=0; i<repeat; i++) {
int idx = 0;
int size = i+1;
StringBuilder sb = new StringBuilder();
String tmp1 = s.substring(0, size);
int cnt = 1;
while(true) {
idx += size;
if(L-idx >= size) {
String tmp2 = s.substring(idx, idx + size);
if(tmp1.equals(tmp2)) {
cnt++;
continue;
}
//앞과 다를 경우,
if(cnt > 1) {
sb.append(cnt).append(tmp1);
cnt = 1;
tmp1 = tmp2;
continue;
} else {
sb.append(tmp1);
cnt = 1;
tmp1 = tmp2;
continue;
}
}
if(cnt > 1) {
sb.append(cnt);
}
sb.append(s.substring(idx - size, L));
break;
}
answer = Math.min(answer, sb.length());
}
return answer;
}
@Test
public void 정답() {
String s = "b";
String s1 = "ababcdcdababcdcd";
String s2 = "abcabcdede";
String s3 = "abcabcabcabcdededededede";
String s4 = "xababcdcdababcdcd";
System.out.println(solution(s));
}
}
'알고리즘' 카테고리의 다른 글
[백준] 2178 - 미로탐색 (0) | 2021.07.15 |
---|---|
[백준] 4485 - 녹색 옷 입은 애가 젤다지? (0) | 2021.07.10 |
[프로그래머스] 튜플 (0) | 2021.07.08 |
[프로그래머스] 기능개발 (0) | 2021.07.08 |
[프로그래머스] 오픈채팅방 (0) | 2021.07.07 |
Comments