본문 바로가기

Algorithm/프로그래머스

[2020카카오공채] 문자열 압축

https://programmers.co.kr/learn/courses/30/lessons/60057

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

#include <string>
#include <vector>

using namespace std;

int digit(int n) {
	int d = 0;
	while (n) {
		n /= 10;
		d++;
	}
	return d;
}

int solution(string s) {
	int answer = s.length();
	
	for (int i = 1; i <= s.length() / 2; i++) {
		vector<string> v;
		int cnt = 1;
		int min = 0;

		for (int j = 0; j < s.length(); j += i) {
			v.push_back(s.substr(j, i));
		}

		v.push_back("");

		for (int j = 1; j < v.size(); j++) {
			if (v[j] != v[j - 1]) {
				if (cnt <= 1) {}
				else min += digit(cnt);

				min += v[j - 1].length();
				cnt = 1;
			}
			else {
				cnt++;
			}
		}

		if (min < answer) answer = min;
	}

	return answer;
}