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();
        }
    }
}

#신난다