내일배움캠프 - TIL/내일배움캠프 - TIL

내일배움캠프 16일차 - 백준 9093

rudals4469 2025. 5. 1. 21:27

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

 

 

문제의 내용은 다음과 같고 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'를 하여 임의적으로 추가하여 마지막 단어 까지 돌 수 있게 구현하였다.