반복문을 사용하여 어떤 문자열을 3개로 자르는 방법을 공부했다.
또한,
반복문을 사용하지 않고 어떤 문자열 길이만큼 새로운 문자열을 만드는 방법을 공부했다.
string str = "helloworld";
string A(str.length(), 'a');
string B.assign(str.length(), 'b')
string C(originalStr.length(), ' ');
fill(C.begin(), C.end(), 'c');
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string input_string()
{
string str;
cin >> str;
return str;
}
void find_answer(string str)
{
string A = "", B = "", C = "", answer = "";
int i, j, k, length = str.length();
//string ans = str;
string ans(str.length(), 'z'); // <- str의 길이만큼의 새로운 문자열 생성하는 문
string temp;
//cout << ans << "\n";
for (i = 1; i < length - 1; i++)
{
temp = "";
for (j = i + 1; j < length; j++)
{
A = str.substr(0, i);//시작부터 i개 만큼
B = str.substr(i, j - i);//i부터 j-i개 만큼
C = str.substr(j);//j부터 끝까지
//cout << A << " " << B << " " << C << "\n";
reverse(A.begin(), A.end());
reverse(B.begin(), B.end());
reverse(C.begin(), C.end());
//cout << A << " " << B << " " << C << "\n";
temp = A + B + C;
//cout << temp << "\n";
//abcdefg에서 반례 발생
//ans보다 작지 않은 정답이 발생한 경우임...
if (temp < ans)
{
ans = temp;
}
}
}
cout << ans << "\n";
return;
}
int main(void)
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
string str;
str = input_string();
find_answer(str);
return 0;
}