오늘은 팀 스크럼에서 스택 다음 문제인 문자 뒤집기를 풀어보았다.

문제의 내용은 다음과 같고 stack 자료구조를 구현하여 풀어볼려고 하였다.
using System.Diagnostics;
using System.Text;
namespace CodingExercise2
{
public class Stack
{
private char[] stack = new char[1000]; // 최대 입력 문자 1000개
private int size = 0;
public void Push(char data)
{
stack[size] = data;
size++;
}
public char Pop()
{
if(!Empty())
{
size -= 1;
char temp = stack[size];
stack[size] = '\0';
return temp;
}
return '\0';
}
public bool Empty()
{
return size == 0;
}
public char Top()
{
if (!Empty())
{
return stack[size - 1];
}
return '\0';
}
}
internal class Program
{
static void Main(string[] args)
{
int testCase = int.Parse(Console.ReadLine());
Stack stack = new Stack();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < testCase; i++)
{
string str = Console.ReadLine();
str += '\n';
for (int j = 0; j < str.Length; j++)
{
if (str[j] == ' ' || str[j] == '\n')
{
while (!stack.Empty())
{
sb.Append(stack.Top());
stack.Pop();
}
sb.Append(' ');
}
else
{
stack.Push(str[j]);
}
}
sb.AppendLine();
}
Console.WriteLine(sb.ToString());
}
}
}
코드는 다음과 같고 stack의 내장함수를 class로 구현한 뒤 내장함수 마냥 호출하여 문제를 풀었다.
어제 stack 기능에 대해 한 번 공부를 했던 지라 class 구조는 쉽게 풀었던 것 같다.
풀다가 생각지도 못한 오류가 있었는데 문자열을 보내면

과 같이 마지막 단어는 출력이 안되었다. 뭐지 뭐지 하다가 알아챈 방법은 내 코드는 마지막에 공백과 \n가 없기 때문에 마지막 단어는 if문을 통과하지 못하는 문제가 생겼다. 그래서 그냥 입력 받은 문자열 뒤에 str += '\n'를 하여 임의적으로 추가하여 마지막 단어 까지 돌 수 있게 구현하였다.
'내일배움캠프 - TIL > 내일배움캠프 - TIL' 카테고리의 다른 글
| 내일배움캠프 18일차 - 개인 과제(스파르타 메타버스 트러블 슈팅) (0) | 2025.05.07 |
|---|---|
| 내일배움캠프 17일차 - 백준 9012, 유니티 씬 별로 해상도 다른 이슈 (0) | 2025.05.02 |
| 내일배움캠프 15일차 - 백준 10828 팀 스크럼 (0) | 2025.04.30 |
| 내일배움캠프 14일차 - Flappy Plane 구현 해보기 (0) | 2025.04.29 |
| 내일배움캠프 13일차 - 팀 프로젝트 Text RPG 구현 완료 (0) | 2025.04.28 |