Algorithm/BOJ
[BOJ]1251 단어나누기(브루트포스,문자열 구현)
Game Client Lee Hwanguk
2023. 2. 4. 21:25
#브루투포스,문자열
https://www.acmicpc.net/problem/1251
1251번: 단어 나누기
알파벳 소문자로 이루어진 단어를 가지고 아래와 같은 과정을 해 보려고 한다. 먼저 단어에서 임의의 두 부분을 골라서 단어를 쪼갠다. 즉, 주어진 단어를 세 개의 더 작은 단어로 나누는 것이다
www.acmicpc.net
#1 입력받은 문자열이 두번 나뉜다
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp18
{
internal class Program
{
static void Main(string[] args)
{
//[BOJ}1251 브루투포스,문자열
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string str=sr.ReadLine();
int len=str.Length;
List<string> list = new List<string>();
//첫번째 글자는 뒤집을 필요없음 i=1,j=1
//mobitel
for (int i=1; i<=len-2; i++) //mobit
{
for(int j=1; j<=len-1-i; j++) //
{
string start= str.Substring(0,i); //0~
string mid= str.Substring(i,j); //1~
string end= str.Substring(i+j); //last
sw.WriteLine("{0} {1} {2}",start,mid,end);
}
}
sr.Close();
sw.Close();
}
}
}
https://learn.microsoft.com/ko-kr/dotnet/api/system.string.substring?view=net-7.0
String.Substring 메서드 (System)
이 인스턴스에서 부분 문자열을 검색합니다. 이 멤버는 오버로드됩니다. 구문, 사용법 및 예제를 비롯하여 이 멤버에 대한 자세한 내용을 보려면 오버로드 목록에서 이름을 클릭합니다.
learn.microsoft.com
#문자열 reverse,ToArray , list에 추가, list정렬
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace ConsoleApp18
{
internal class Program
{
static void Main(string[] args)
{
//[BOJ}1251 브루투포스,문자열
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
string str=sr.ReadLine();
int len=str.Length;
List<string> list = new List<string>();
//첫번째 글자는 뒤집을 필요없음 i=1,j=1
//mobitel
for (int i=1; i<=len-2; i++) //mobit
{
for(int j=1; j<=len-i-1; j++)
{
string start= str.Substring(0,i); //0~
string mid= str.Substring(i,j); //1~
string end= str.Substring(i+j); //~last
//sw.WriteLine("{0} {1} {2}",start,mid,end);
//문자열 reverse
var reverStr=string.Format("{0}{1}{2}",new string(start.Reverse().ToArray()),
new string(mid.Reverse().ToArray()),
new string(end.Reverse().ToArray()));
list.Add(reverStr);//list 추가
}
}
list.Sort();//list정렬
//foreach(var str0 in list)
//{
// sw.WriteLine(str0);
//}
sw.WriteLine(list[0]);
sr.Close();
sw.Close();
}
}
}
#신난다