본문 바로가기
Algorithm(CodeTree, C++)/문자열

[코드트리] Run Length 인코딩 C++

by kurooru 2024. 6. 10.

#include <iostream>
#include <string>
using namespace std;

int main() {
    
    // input
    string sentence;
    cin >> sentence;
    
    int sentence_len = sentence.length(), cnt = 1;
    char curr_char = sentence[0];
    int compressed_length = 0;

    for (int i = 1; i < sentence_len; i++) {
        if (sentence[i] != curr_char) {
            compressed_length += 1 + to_string(cnt).length();
            curr_char = sentence[i];
            cnt = 1;
        } else {
            cnt++;
        }
    }
    compressed_length += 1 + to_string(cnt).length();
    cout << compressed_length << endl;
    
    cnt = 1;
    curr_char = sentence[0];
    for (int i = 0; i < sentence_len - 1; i++) {
        if (sentence[i] != sentence[i+1]) {
            cout << curr_char << cnt;
            curr_char = sentence[i+1];
            cnt = 1;
        } else{
            cnt ++;
        }
    }
    cout << curr_char << cnt;


    return 0;
}
 

코드트리 | 코딩테스트 준비를 위한 알고리즘 정석

국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요.

www.codetree.ai