백준 1251 c++

magicdrill·2024년 7월 22일

백준 문제풀이

목록 보기
399/673

백준 1251 c++

반복문을 사용하여 어떤 문자열을 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;
}

0개의 댓글