#include <string>
using namespace std;
int solution(string s) {
int answer = s.size();
for(int i=1; i<s.size(); i++){
string zip = ""; // 압축된 문자열을 저장할 변수
string temp = s.substr(0, i); // 압축을 판단할 변수
int count = 1;
for(int j=i; j<s.size(); j+=i){
if(temp == s.substr(j,i)){
// 같다면, 압축했을때 표시해줄 숫자 1상승
count++;
}else{
// 다르다면, temp를 다음 문자로 대체시키고 진행
if(count > 1) zip += to_string(count);
zip += temp;
temp = s.substr(j,i);
count = 1;
}
}
if(count > 1) zip += to_string(count);
zip += temp;
answer = answer < zip.size() ? answer : zip.size();
}
return answer;
}
압축한 문자열을 새로 만들 생각을 못하고, 기존의 문자열을 수정할 생각에 갇혀서 못풀었다.
결국 다른 분의 솔루션을 보고 풀었다. zip 변수가 그것이다.
참고 : https://yjyoon-dev.github.io/kakao/2020/11/05/kakao-strzip/
'공부 > 알고리즘' 카테고리의 다른 글
프로그래머스 완전탐색 소수찾기 c++ (0) | 2022.03.31 |
---|---|
프로그래머스 124 나라의 숫자 c++ solution (0) | 2021.10.06 |
2019 카카오 코딩테스트 실패율 c++ solution (0) | 2021.09.10 |
2021 카카오 코딩테스트 신규 아이디 추천 c++ solution (0) | 2021.09.09 |
HackerRank Bigger is Greater c++ solution (0) | 2021.09.07 |