프로그래머스 _ 문자열 압축
programmers.co.kr/learn/courses/30/lessons/60057#
풀이방법
1. 문자를 나누는 숫자 1 ~ 주어진문자열의 길이/2 for문
2. 비교
3. 줄어드는 숫자 = (원래길이) - (나중에 나오는 길이)
코드
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int solution(string s) {
int answer = 0;
//1. 단위
for(int divNum =1; divNum <=s.length()/2; divNum++)
{
int compressionRate = 0;
for (int i = 0; i < s.length();)
{
string str = s.substr(i, divNum);
int cnt = 0;
for (int j = i; j < s.length(); j += divNum)
{
string compareStr = s.substr(j, divNum);
if (str == compareStr)
cnt++;
else
break;
}
string repeatStr = to_string(cnt);
int numberLen = repeatStr.length();
if (cnt > 1)
//압축률 = (원래길이) - (나중에 나오는 길이)
compressionRate += (divNum * cnt) - (divNum + numberLen);
//건너뛰기!!
i += cnt * divNum;
}
answer = max(compressionRate, answer);
}
answer = s.size() - answer;
return answer;
}
numberLen를 잘못구했는데 눈에 띄지 않아서 ㅋㅋㅋㅋㅋㅋ 시간 좀 많이 날렸다