문제번호: 9935
문제명: 뮨자열 폭발
문제링크: https://www.acmicpc.net/problem/9935
문제내용과 예제 입/출력은 위 문제 링크에서 확인해 주시기 바랍니다
오늘은 문자열 폭발이라는 문제를 풀어보았습니다. 주어진 문자열에 폭발 문자열이 포함되어있으면 폭발 문자열은 삭제되고 나머지 문자열은 붙게됩니다. 붙은 문자열이 다시 폭발 문자열을 만들어 연쇄적인 폭발이 일어날 수 있다는 점에 유의해서 코드를 작성해야합니다. 구현은 다음과 같이 했습니다.
char형 List를 이용해서 주어진 문자열을 하나씩 List에 담아주는 동시에 List의 크기가 폭발문자열 크기 이상이고 List의 마지막 문자가 폭발 문자열의 마지막 문자와 일치한다면 반복문으로 List는 뒤부터 폭발 문자열이 포함되는지 검사합니다. 참이라면, List에서 폭발 문자열 길이만큼 뒤에서 삭제하고 진행합니다. 모든 반목문이 종료되면 List의 요소 개수를 확인하고 0일경우 FRULA, 아닐경우 요소를 하나씩 출력합니다.
다음은 정답코드입니다.
static void Main()
{
using StreamReader sr = new StreamReader(Console.OpenStandardInput());
using StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
string str = sr.ReadLine();
string bomb = sr.ReadLine();
int len = bomb.Length;
char last = bomb[len - 1];
List<char> list = new List<char>();
for (int i = 0; i < str.Length; i++)
{
char c = str[i];
list.Add(c);
if (c == last && list.Count >= len)
{
bool match = true;
for (int j =0; j < len; j++)
{
if (list[list.Count - len + j] != bomb[j])
{
match = false;
break;
}
}
if (match)
{
list.RemoveRange(list.Count - len, len);
}
}
}
if (list.Count == 0)
Console.WriteLine("FRULA");
else
Console.WriteLine(new string(list.ToArray()));
}'알고리즘 풀이' 카테고리의 다른 글
| [C#] 코드포스 1829E번 문제풀이 (0) | 2026.04.29 |
|---|---|
| [C#] 코드포스 71A번 문제풀이 (0) | 2026.04.18 |
| [C#] 백준 2096번 문제풀이 (0) | 2026.04.12 |
| [C#] 백준 9657번 문제풀이 (0) | 2026.04.04 |
| [C#] 백준 1912번 문제풀이 (0) | 2026.04.02 |