Programers:文字列圧縮(2020 KAKAO BLIND RECRUITMENT)
9715 ワード
文字列圧縮
コード#コード# #include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 11:38 시작
int solution(string s) {
int answer = 0;
// 문자열이 n일때 1 ~ n/2개 단위로 자를때 까지 구해서 최솟값을 찾아야 한다 (홀수포함)
int until = s.length()/2;
vector<string> arr(until, "");
vector<int> result;
/* 문자열이 1개일 때 1로 바로 리턴 - 예외처리 */
if(s.length() == 1) return 1;
/* slice는 문자를 자르는 단위! */
for(int slice=1;slice<=until;slice++)
{
/* 비교할 기준이 되는 문자의 반복문 */
for(int i=0;i<s.length();)
{
int cnt=1;
/* 비교되는 문자! */
string fix = s.substr(i,slice);
/* 비교할 대상이 되는 문자의 반복문 - 마지막 요소를 마저 추가하기 위해 +slice 처리 */
for(int j=i+slice;j<s.length()+slice;j+=slice)
{
string comp;
if(j < s.length()) comp = s.substr(j,slice);
else comp = " ";
if(fix == comp) cnt++;
else if(cnt > 1){
string tmp = to_string(cnt) + fix;
arr[slice-1] += tmp;
break;
}else {
arr[slice-1] += fix;
break;
}
}
i += cnt*slice;
}
}
for(auto a:arr)
result.push_back(a.length());
answer = *min_element(result.begin(), result.end());
return answer;
}
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 11:38 시작
int solution(string s) {
int answer = 0;
// 문자열이 n일때 1 ~ n/2개 단위로 자를때 까지 구해서 최솟값을 찾아야 한다 (홀수포함)
int until = s.length()/2;
vector<string> arr(until, "");
vector<int> result;
/* 문자열이 1개일 때 1로 바로 리턴 - 예외처리 */
if(s.length() == 1) return 1;
/* slice는 문자를 자르는 단위! */
for(int slice=1;slice<=until;slice++)
{
/* 비교할 기준이 되는 문자의 반복문 */
for(int i=0;i<s.length();)
{
int cnt=1;
/* 비교되는 문자! */
string fix = s.substr(i,slice);
/* 비교할 대상이 되는 문자의 반복문 - 마지막 요소를 마저 추가하기 위해 +slice 처리 */
for(int j=i+slice;j<s.length()+slice;j+=slice)
{
string comp;
if(j < s.length()) comp = s.substr(j,slice);
else comp = " ";
if(fix == comp) cnt++;
else if(cnt > 1){
string tmp = to_string(cnt) + fix;
arr[slice-1] += tmp;
break;
}else {
arr[slice-1] += fix;
break;
}
}
i += cnt*slice;
}
}
for(auto a:arr)
result.push_back(a.length());
answer = *min_element(result.begin(), result.end());
return answer;
}
構造は
1)Slice for Moon:1からn/2ユニットの大きなフレーム
2)比較基準となる文字
3)比較する文字
Reference
この問題について(Programers:文字列圧縮(2020 KAKAO BLIND RECRUITMENT)), 我々は、より多くの情報をここで見つけました https://velog.io/@neity16/Programers-문자열-압축-2020-KAKAO-BLIND-RECRUITMENTテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol