Recent Posts
Notice
No Rules Rules
문자열 압축 (feat. 프로그래머스, 60057번) 본문
728x90
반응형
// woohyeon.kim
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
void convert(const string& text, const int& group_count, vector<string>& out)
{
if(!out.empty()) out.clear();
for(int idx = 0 ; idx < text.size() ; idx += group_count)
{
out.push_back(text.substr(idx, group_count));
}
}
int solution(string s) {
int answer = 0;
vector<int> tmpl;
vector<string> token;
string before;
for(auto group_index = 1; group_index <= s.size() / 2; ++group_index)
{
convert(s, group_index, token);
string text = "";
before = token[0];
auto equal_count = 1;
for(auto token_index = 1; token_index < token.size(); ++token_index)
{
// if equal
if(token[token_index].compare(before) == 0)
{
++equal_count;
}
// if not equal
else
{
if(equal_count != 1)
{
text += to_string(equal_count);
}
text += before;
// replace before text
before = token[token_index];
equal_count = 1;
}
}
if(equal_count != 1)
{
text += to_string(equal_count);
}
text += before;
tmpl.push_back(text.size());
}
if(tmpl.empty())
{
tmpl.push_back(s.size());
}
answer = *min_element(tmpl.begin(), tmpl.end());
// min_index = min_element(tmpl.begin(), tmpl.end()) - tmpl.begin();
// max_index = max_element(tmpl.begin(), tmpl.end()) - tmpl.begin();
return answer;
}
// *&)*@*
저는 가장 큰값과 작은값, 그 값의 위치 등을 알고 싶어서 vector에 담았습니다만
사실 그럴 필요는 없고, 최초 입력받은 값인 s의 길이가 가장 기니까...
text의 문자열이 그보다 작으면 대입해서 리턴하면 더 간단합니다.
728x90
반응형
'생활 > 코테' 카테고리의 다른 글
이친수 (feat. 백준, 2193번) (0) | 2022.07.20 |
---|---|
오픈채팅방 (feat. 프로그래머스, 42888번) (0) | 2022.07.20 |
신규 아이디 추천 (feat. 프로그래머스, 72410번) (0) | 2022.07.20 |
로또의 최고 순위와 최저 순위 (feat. 프로그래머스, 77484번) (0) | 2022.07.20 |
신고 결과 받기 (feat. 프로그래머스, 92334번) (0) | 2022.07.20 |
Comments