ALGORITHM/PROGRAMMERS
[프로그래머스] 문자열 압축 (2020 KAKAO BLIND RECRUITMENT)
0298
2021. 3. 5. 22:41
programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
2021-03-05
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
|
public class Solution60057 {
public static int solution(String s) {
int answer = s.length();
for(int i = 1; i <= s.length()/2; i++) {
int sum = 0;
int count = 0;
for(int j = 0; j <= s.length() - i; j+=count*i) {
String str = s.substring(j, j+i);
count = 1;
for(int k = j+i; k <= s.length() - i; k+=i) {
String comp = s.substring(k, k+i);
if(str.equals(comp)) count++;
else break;
}
sum += ((count == 1) ? 0 : (String.valueOf(count).length())) + str.length();
}
sum += s.length() % i;
answer = Math.min(sum, answer);
}
return answer;
}
public static void main(String[] args) {
String s = "ababcdcdababcdcd";
System.out.println(solution(s));
}
}
|
cs |
#문제풀이
그냥 직관적으로 풀었다.
문자열의 길이도 길지 않아서, 문자를 1개 단위부터 ~ s.length()/2개 단위까지 나눠서 잘라보았다.
그리고 자른 문자열을 비교해가면서 같은 문자끼리 묶어서 길이를 계산하였고, 그 중 가장 짧은 것의 길이를 return 하였다.