🔗 문제 링크
📖 풀이 과정
- 구현유형의 문제입니다.
- substring() 메소드와 인덱스에 대한 고민이 필요합니다.
- substring(int start, int end) 메소드는 start인덱스부터 end - 1 인덱스까지의 문자열을 반환합니다.
- 문자열의 경우는 다양하므로 이를 모두 충족시켜야 합니다.
- 먼저, 주어지는 문자열의 길이가 1일 경우에는 1을 반환해야 합니다.
- 여러번 압축하다 마지막 문자열이 압축이 안되면, 진행중인 StringBuilder 문자에 붙여서 총 길이를 반환해야 합니다.
- 또 신경써야 할 부분은 내부 for 반복문에서 시작 인덱스는 외부 반복문의 인덱스입니다.
- 또한, 증가 되는 부분에서 인덱스는 외부 반복문의 인덱스에 비례합니다.
- 압축 단계는 1부터 문자열의 길이의 반까지 진행되어야 합니다.
- 어차피 반이 넘어가면, 문자열 압축이 안되기 때문입니다.
- 최종적으로 내부 반복문을 돌면서 최소 길이의 값을 비교해야 합니다.
💻 코드
public static int solution(String s) {
int answer = Integer.MAX_VALUE;
if(s.length() == 1){
return 1;
}
for(int i = 1; i< s.length() / 2 + 1; i++){
int count = 1;
StringBuilder sb = new StringBuilder();
String str = s.substring(0,i);
int limit = 0;
for(int j = i; j< s.length() + 1; j += i){
if(i + j > s.length()){
limit = s.length();
}else{
limit = i + j;
}
String next = s.substring(j,limit);
if(str.equals(next)){
count += 1;
}else{
if(count == 1){
sb.append(str);
}else{
sb.append(count).append(str);
}
str = next;
count = 1;
}
}
sb.append(str);
answer = Math.min(answer,sb.length());
}
return answer;
}
}
'Algorithm > 프로그래머스' 카테고리의 다른 글
프로그래머스 : 모음사전 (Java) (0) | 2022.02.25 |
---|---|
프로그래머스 : 피로도 (Java) (0) | 2022.02.20 |
프로그래머스 : 단체사진 찍기 (Java) (0) | 2022.02.17 |
프로그래머스 : 숫자 문자열과 영단어 (Java) (0) | 2022.02.15 |
프로그래머스 : 신고 결과 받기 (Java) (0) | 2022.02.15 |