[#77][알고리즘] 문자열 압축
코딩 테스트 대비 > 문자열 압축
문제
문자열을 압축한다.GOOOOOOOOD을 압축하면 1G8O1D이다. 만약, 문자열 압축 후의 길이가 압축 전 보다 길다면, 입력받은 문자열을 그대로 출력한다.
입력
첫 줄에는 입력받을 단어의 갯수 T
두번째 줄 부터는 T개의 문자열 단어 입력받음 (단어의 길이는 2자~200자)
단어에 사용되는 글자의 종류는 알파벳 대문자만 사용한다.
출력
문자열 압축한 결과 출력.
예제 입력 1
3 GOOOOOOOODBYE HANWHA SSSSSSSSSONG
예제 출력 1
1G8O1D1B1Y1E HANWHA 9S1O1N1G
#include <iostream>
#include <string>
using namespace std;
int main() {
int T, count, pos;
string input, output;
scanf("%d", &T);
cin.ignore();
for (int i = 0; i < T; i++) {
getline(cin, input);
//필요한 변수 초기화
count = 1; pos = 0; output = "";
while (pos < (input.length() - 1)) {
if (input.at(pos) == input.at(pos + 1)) {
count++;
if (pos + 1 == input.length() - 1) {
output+= to_string(count) + input.at(pos);
break;
}
}
else if (input.at(pos) != input.at(pos + 1)) {
output+= to_string(count) + input.at(pos);
count = 1;
}
pos++;
if (pos == input.length() - 1) {
output += to_string(1) + input.at(pos);
}
}
//output과 input의 길이를 비교해 output이 더 길면 input그대로 출력
if (output.length() > input.length()) {
cout << input << endl;
}
else {
cout << output << endl;
}
}
return 0;
}
| cs |
이런거는 어찌할까요
답글삭제aaccaaccaacc
2a2c2a2c....가아니라
3aacc가 나와야하는뎅..