문자열 a와 b 입력받기:
StringBuilder t 초기화:
문자열 a 순회:
부분 문자열 비교 및 제거:
결과 출력:
using System.Text;
namespace BOJ_9935
{
class Program
{
static void Main()
{
string a = Console.ReadLine();
string b = Console.ReadLine();
StringBuilder t = new StringBuilder();
for (int i = 0; i < a.Length; i++)
{
t.Append(a[i]);
if (t.Length >= b.Length)
{
bool flag = true;
for (int j = 0; j < b.Length; j++)
{
if (t[t.Length - b.Length + j] != b[j])
{
flag = false;
break;
}
}
if (flag)
{
t.Length -= b.Length;
}
}
}
if (t.Length == 0)
{
Console.WriteLine("FRULA");
}
else
{
Console.WriteLine(t);
}
}
}
}
StringBuilder를 사용하지 않고 string으로 문자열을 계속 추가 제거 하였더니 메모리 초과가 나왔다.
문자열 문제에서 문자열을 합치거나 짤라야하는 경우에 StringBuilder를 이용할 수 있도록 연습해야겠다.
StringBuilder가 String 연산시 왜 효율적인지 다음에 블로그 글을 작성해봐야겠다.
자료 구조
문자열
스택