📝 2025 C언어 특강 내용 기록
😼 Github : https://github.com/mad-cost/C-structures-basics
Day 5에서는 중위 표현식을 후위 표현식으로 바꾸고, 코드를 완성해 보았다
Day 6에서는 만약 괄호가 있을 경우 후위표식으로 변환 시
어떻게 우선순위를 처리해 줄 수 있을지에 대하여 알아보도록 하자
📊 후위 표현식 괄호 처리
📋 후위 표현식 변환 시 괄호 처리 규칙
- 여는 괄호 '('를 만나면
→ stack에 넣어준다 - 닫는 괄호 ')'를 만나면
→ stackTop에 있는 연산자를 하나씩 꺼내 result 배열에 넣어준다. - 이 과정은
→ stackTop에 여는 괄호 '('가 나올 때까지 반복한다. - 여는 괄호 '('를 만나면
→ result 배열에 추가하지 않고, stackTop을 감소시켜 버려준다.
사용자가 다음 중위 표현식을 입력했다고 가정해 보겠다.
( A + B * ( A + C ) ) * D
1️⃣ '('입력
여는 괄호 '(' 는 우선순위 비교 없이 stack에 그대로 넣어준다.

2️⃣ 반복
다음 여는 괄호 '(' 가 나오기 전까지 반복
(이 과정은 Day5에서 했던 규칙과 동일)




3️⃣ '('입력
여는 괄호 '(' 는 stack에 그대로 넣어준다

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



5️⃣ ')'입력
닫는 괄호 ')'를 만나면,
stackTop에 있는 연산자를 하나씩 꺼내 result 배열에 넣어준다.
(이 과정은 stackTop에 여는 괄호 '('가 나올 때까지 반복한다)


6️⃣ stack 에서 '('를 만나면
- stackTop 감소
- 다음 수식으로 이동


7️⃣ ')'입력
닫는 괄호 ')'를 만나면,
stackTop에 있는 연산자를 하나씩 꺼내 result 배열에 넣어준다.
(이 과정은 stackTop에 여는 괄호 '('가 나올 때까지 반복한다)


8️⃣ stack 에서 '('를 만나면
- stackTop 감소
- 다음 수식으로 이동

9️⃣ 반복
(이 과정은 Day5에서 했던 규칙과 동일)



✅ 최종 결과
중위 표현식 ➡️ 후위 표현식
( A + B + ( A + C ) ) * D ➡️ A B A C + * + D *
📝 마무리하며
이전 Day 5 후위 표현식(Postfix)에 이어서,
Day 6에서는 후위 표현식 변환 과정에서 괄호를 만났을 때
우선순위를 어떻게 처리하고 해결하는지 알아보았다.
쉽게 설명해 보려고 그림을 하나하나 수작업으로 만들었는데,
생각보다 시간이 정말 오래 걸렸다.
이 정도면 거의…
알고리즘 설명이 아니라 수공예 작업에 가까웠던 것 같다.
어쩌면 이태리 장인들이 한 땀 한 땀 옷을 만들던 그 마음을,
조금은 알 수 있을 것 같은 하루였다 💦
읽어주셔서 감사합니다 🙇
'해피 코딩 > Algorithm' 카테고리의 다른 글
| [Day 5] 후위 표현식(Postfix) (1) | 2026.02.25 |
|---|---|
| [Day 4] Linked List 데이터의 삭제 (1) | 2026.01.16 |
| [Day 3] LinkedList의 데이터 입력과 출력 (0) | 2026.01.12 |
| [Day 2] 자료구조의 확장 / Stack에서 ArrayList까지 (0) | 2026.01.02 |
| [Day 1] C언어의 메모리 구조 이해 / Stack구현 (1) | 2026.01.01 |