PS/정렬 알고리즘[Sort]

백준 1251 단어 나누기

SeungbeomKim 2022. 7. 4. 17:53
반응형

https://www.acmicpc.net/problem/1251

 

1251번: 단어 나누기

알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다

www.acmicpc.net

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

int main()
{
	string str;
	string ans = "";
	cin>>str;
	for(int i=1;i<str.length()-1;i++)
	{
		for(int j=1;j<str.length()-i;j++)
		{
			string a = str.substr(0,i);
			string b = str.substr(i,j);
			string c = str.substr(i+j);
			reverse(a.begin(),a.end());
			reverse(b.begin(),b.end());
			reverse(c.begin(),c.end());
			if(ans=="") ans = a+b+c;
			else if(a+b+c<ans) ans = a+b+c; 
		}
	}
	cout<<ans;
}

<풀이과정>

이 문제는 string 헤더에 있는 substr함수를 사용하면 더욱 풀기 쉬워진다.

substr함수 : 문자열을 자르는 함수 

                  : 문자열.substr(시작위치, 길이) 

                  : 문자열.substr(시작위치) (이 경우에는 시작위치부터 끝까지 반환값이 된다.)

ex) str = "coding"이라고 가정했을 때, str.substr(0,1) =>반환 문자는 c가 된다.

ex) str = "coding"이라고 가정했을 때, str.substr(0) => 반환 문자는 coding이 된다. 

반응형

'PS > 정렬 알고리즘[Sort]' 카테고리의 다른 글

백준 5635 생일(c++)  (0) 2022.07.07
백준 10989 수 정렬하기 3(c++)  (1) 2022.07.07
백준 2075 N번째 큰 수  (1) 2022.07.07
백준 10867 중복 빼고 정렬하기(c++)  (0) 2022.07.06
백준 10814 나이순 정렬(c++)  (0) 2022.07.06