본문 바로가기
전공공부/코딩테스트

(c++) 프로그래머스 문자열 압축

by 시아나 2022. 1. 4.

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

 

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

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

programmers.co.kr

 


 

나의 풀이

 

#include <string>
#include <vector>
#include <iostream>

using namespace std;

int find(string s, int n) {
    string str = "";
    string compare = s.substr(0, n);
    int i, count = 0;
    for (i = 0 + n; i < s.size(); i += n) {
        if (s.substr(i, n).compare(compare) == 0) {
            count++;
        }
        else {
            if (count == 0) {
                str += compare;
            }
            else {
                str += to_string(count + 1) + compare;
            }
            compare = s.substr(i, n);
            count = 0;
        }
    }
    if (count == 0) {
        str += compare;
    }
    else {
        str += to_string(count + 1) + compare;
    }
    return str.size();
}


int solution(string s) {
    int answer = 1000;
    for (int i = 1; i <= (s.size() / 2)+1; i++) {
        int num = find(s, i);
        if (answer > num) answer = num;
    }
    return answer;
}