본문 바로가기
해피 코딩/Algorithm

[Day 6] 후위 표현식 괄호 처리

by happy-coding 2026. 2. 26.
📝 2025 C언어 특강 내용 기록

😼 Github : https://github.com/mad-cost/C-structures-basics

 

Day 5에서는 중위 표현식을 후위 표현식으로 바꾸고, 코드를 완성해 보았다

Day 6에서는 만약 괄호가 있을 경우 후위표식으로 변환 시
어떻게 우선순위를 처리해 줄 수 있을지에 대하여 알아보도록 하자


📊 후위 표현식 괄호 처리

 

📋 후위 표현식 변환 시 괄호 처리 규칙

  1. 여는 괄호 '('를 만나면
    → stack에 넣어준다
  2. 닫는 괄호 ')'를 만나면
    → stackTop에 있는 연산자를 하나씩 꺼내 result 배열에 넣어준다.
  3. 이 과정은
    → stackTop에 여는 괄호 '('가 나올 때까지 반복한다.
  4. 여는 괄호 '('를 만나면
    → result 배열에 추가하지 않고, stackTop을 감소시켜 버려준다.

 

사용자가 다음 중위 표현식을 입력했다고 가정해 보겠다.

 ( A + B  * ( A + C  ) ) * D

 

1️⃣ '('입력

여는 괄호 '(' 는 우선순위 비교 없이 stack에 그대로 넣어준다.

 

2️⃣ 반복
다음 여는 괄호 '(' 가 나오기 전까지 반복

(이 과정은 Day5에서 했던 규칙과 동일)

 

3️⃣ '('입력

여는 괄호 '(' 는 stack에 그대로 넣어준다

 

4️⃣ 반복

닫는 괄호 ')' 를 만날 때까지 반복

 

5️⃣ ')'입력

닫는 괄호 ')'를 만나면,

stackTop에 있는 연산자를 하나씩 꺼내 result 배열에 넣어준다.

(이 과정은 stackTop에 여는 괄호 '('가 나올 때까지 반복한다)

 

6️⃣ stack 에서 '('를 만나면

  1. stackTop 감소
  2. 다음 수식으로 이동

 

7️⃣ ')'입력

닫는 괄호 ')'를 만나면,

stackTop에 있는 연산자를 하나씩 꺼내 result 배열에 넣어준다.

(이 과정은 stackTop에 여는 괄호 '('가 나올 때까지 반복한다)

 

8️⃣ stack 에서 '('를 만나면

  1. stackTop 감소
  2. 다음 수식으로 이동

 

9️⃣ 반복

(이 과정은 Day5에서 했던 규칙과 동일)

 

✅ 최종 결과

중위 표현식 ➡️ 후위 표현식

( A + B + ( A + C ) ) * D ➡️ A B A C + * + D *

📝 마무리하며

이전 Day 5 후위 표현식(Postfix)에 이어서,

Day 6에서는 후위 표현식 변환 과정에서 괄호를 만났을 때
우선순위를 어떻게 처리하고 해결하는지
알아보았다.

 

쉽게 설명해 보려고 그림을 하나하나 수작업으로 만들었는데,
생각보다 시간이 정말 오래 걸렸다.

 

이 정도면 거의…
알고리즘 설명이 아니라 수공예 작업에 가까웠던 것 같다.

 

어쩌면 이태리 장인들이 한 땀 한 땀 옷을 만들던 그 마음을,
조금은 알 수 있을 것 같은 하루였다 💦

 

읽어주셔서 감사합니다 🙇