[BOJ][C#] 1918 후위 표기식

LimJaeJun·2024년 1월 20일
0

PS/BOJ

목록 보기
102/108

📕 문제

📌 링크

📗 접근 방식

  • 문자는 그대로 출력한다.
  • '('를 만나면 스택에 푸시한다.
  • ')'를 만나면 '('를 만날 때까지 스택에서 팝하여 출력한다.
  • 연산자를 만났을 때, 스택의 top이 현재 연산자보다 우선순위가 높거나 같으면 pop한 후 현재 연산자를 스택에 푸시한다.
  • 연산자를 만났을 때, 스택의 top이 현재 연산자보다 우선순위가 낮으면 현재 연산자를 스택에 푸시한다.

📘 코드

using System.Text;

namespace BOJ
{
    class No_1918
    {
        static void Main()
        {
            StringBuilder sb = new StringBuilder();

            string s = Console.ReadLine();

            Stack<char> st = new Stack<char>();

            for (int i = 0; i < s.Length; i++)
            {
                if(s[i] >= 'A' && s[i] <= 'Z')
                {
                    sb.Append(s[i]);
                }
                else
                {
                    if (s[i] == '(')
                    {
                        st.Push(s[i]);
                    }
                    else if (s[i] == ')')
                    {
                        while (st.Count > 0 && st.Peek() != '(')
                        {
                            sb.Append(st.Pop());
                        }

                        st.Pop();
                    }
                    else if(s[i] == '*' || s[i] == '/')
                    {
                        while (st.Count > 0 && (st.Peek() == '*' || st.Peek() == '/'))
                        {
                            sb.Append(st.Pop());
                        }
                        
                        st.Push(s[i]);
                    }
                    else
                    {
                        while (st.Count > 0 && st.Peek() != '(')
                        {
                            sb.Append(st.Pop());
                        }
                        
                        st.Push(s[i]);
                    }
                }
            }

            while (st.Count > 0)
            {
                sb.Append(st.Pop());
            }

            Console.WriteLine(sb);
        }
    }
}

📙 오답노트

📒 알고리즘 분류

  • 자료 구조
  • 스택
profile
Dreams Come True

0개의 댓글

관련 채용 정보