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

 

코딩테스트 연습 - 문자열 압축

데이터 처리 전문가가 되고 싶은 "어피치"는 문자열을 압축하는 방법에 대해 공부를 하고 있습니다. 최근에 대량의 데이터 처리를 위한 간단한 비손실 압축 방법에 대해 공부를 하고 있는데, 문

programmers.co.kr

 

* 문제를 이해하는것이 가장 중요

* 여러 테스트 케이스 활용

**** 테스트케이스 "xxxxxxxxxxyyy" 의 경우 압축이 되면 10x3y 로 x가 10개, 두자리 수로 압축되기 때문에 해당 조건 꼭 넣어줘야 됨!!

 

 

 

int comp(string s, int n) {
	string temp;
	int times=s.size()/n;
	int size = s.size();
	int flag = 0;
	int cnt = 0;

	temp = s.substr(0, n);

	for (int i = 0; i < times; i++) {
		string next = s.substr((i+1)*n, n);
		if (temp.compare(next) == 0) {
			size -= n;
			flag++;
		}
		else if (flag != 0 && flag<9) {
			size++;
			flag = 0;			
		}
		else if (flag != 0 && flag>=9) {
			size++;
			size++;
			flag = 0;
		}
		
		temp = next;
	}
	return size;
}
int solution(string s) {
	int answer = s.size();
	string temp=s;
	
	
	for (int i = 1; i <= s.size(); i++) {
		answer = min(answer, comp(temp, i));
	}
	return answer;
}

+ Recent posts