https://programmers.co.kr/learn/courses/30/lessons/60057
코딩테스트 연습 - 문자열 압축
데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문
programmers.co.kr
1. 첫 코드
- 패턴찾는경우 len/2까지만 탐색
- 마지막 자투리 문자열 더하는 코드를 줄일 수 없을까
#include <string>
#include <vector>
using namespace std;
int solution(string s) {
int answer = 0;
int sLen = s.length();
answer = sLen;
for(int i=1; i<=sLen/2; i++){ // i개 단위
string res = "";
string bss = s.substr(0,i);
int cnt = 1;
int idx = i; // next tok start index
while(idx + i <= sLen){
string tmp = s.substr(idx, i);
if(bss == tmp){
cnt++;
}
else{
if(cnt > 1)
res += to_string(cnt);
res += bss;
cnt = 1;
bss = tmp;
}
idx += i;
}
if(cnt > 1)
res += to_string(cnt);
res += bss;
if(idx < sLen){
res += s.substr(idx, sLen-idx);
}
if(answer > res.length())
answer = res.length();
}
return answer;
}
'알고리즘 > 알고리즘' 카테고리의 다른 글
[C++] 프로그래머스 : 오픈채팅방 (0) | 2022.06.01 |
---|---|
[C++] 백준 1911 : 흙길 보수하기 (0) | 2022.05.20 |
[C++] 백준 20157번 : 화살을 쏘자! (0) | 2022.05.16 |
[C++] 백준 19640번 : 화장실의 규칙 (0) | 2022.05.13 |
[C++] 백준 18405번 : 경쟁적전염 (0) | 2022.05.13 |