[Kakao코딩테스트] 2020-1번-문자열압축
풀이
어떻게 풀어도 풀리긴 할 문제지만, 카카오문제가 다그래보이지만 C++말고 파이썬으로 풀었으면 특히 쉬웠겠다 푸는내내 생각한 문제
문자열 길이가 최대 1000바이트로 몹시작기때문에 전체다 검사를 하면된다. 그래서 압축단위를 1자리부터 끝까지하는데 어짜피 반부터는 의미가없으므로 반까지만 한다.
1자리 문자일수도있으니까 answer는 string size로 처음에 초기화 해줬고 c++로 풀때 string에 캐릭터 넣는거 조금 조심해 주고 cout으로 디버그 찍어가면서 그냥 구현하면 된다.
코드
[Kakao] 2020-1-문자열압축
#include <string>
#include <vector>
#include <iostream>
using namespace std;
int solution(string s) {
int size = s.size();
int answer = size;
//cout<<size;
//압축단위
for(int i=1;i<=size/2;i++){
int j=0;
string tmp ="";
while(j<size){
string unit = s.substr(j,i);
int cnt=1;
while(j<size-i+1){
string test=s.substr(j+i,i);
if(unit.compare(test)==0){
cnt++;
j=j+i;
}else{
break;
}
}
if(cnt>1){
tmp+=to_string(cnt);
}
tmp+=unit;
j=j+i;
}
int tmpsize=tmp.size();
if(tmpsize<answer){
answer=tmpsize;
}
}
return answer;
}
Written on September 3, 2020