프로그래머스 (코딩테스트연습) - 문자열 압축
해당 문제는 반복되는 문자를 압축하여 표현하는 문제로 몇개 단위로 압축할지는 정해져 있습니다. 반복되는 문자의 최대값은 입력 받은 문자열 길이의 1/2 이고 1개부터 그전까지 반복하는 경우를 구해 압축을 진행했습니다. 반복단위를 넘어서는 마지막 문자들은 그대로 출력하는 부분을 예외로 두고 압축 문자열을 만들어 가며 표현한 문자열 중 가장 짧은 것의 길이를 구했습니다.
public int solution(String s) {
int answer = s.length();
int sLength = s.length();
for(int repeatLength = 1; repeatLength <= sLength / 2; repeatLength++) {
int start = 0;
int repeatCount = 1;
String temp = "";
StringBuilder stringBuilder = new StringBuilder();
while(start <= sLength) {
String compareStr = s.substring(start, Math.min(start + repeatLength, sLength));
if (temp.equals(compareStr)) {
repeatCount++;
} else {
stringBuilder.append(repeatCount == 1 ? temp : repeatCount + temp);
temp = compareStr;
repeatCount = 1;
}
start += repeatLength;
if (start > sLength) {
stringBuilder.append(temp);
}
}
answer = Math.min(answer, stringBuilder.toString().length());
}
return answer;
}
'정리 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 멀쩡한 사각형 (0) | 2022.04.04 |
---|---|
프로그래머스 - 오픈채팅방 (0) | 2022.03.31 |
프로그래머스 - 크레인 인형뽑기 (0) | 2022.03.28 |
프로그래머스 - 키패드 누르기 (0) | 2022.03.25 |
프로그래머스 - 숫자 문자열과 영단어 (0) | 2022.03.24 |
댓글